C#(三):命名空间、访问修饰符、枚举、集合、静态、只读、常量
admin
2024-04-30 18:46:20
0

命名空间、访问修饰符、枚举、集合、静态、只读、常量

    • 命名空间
    • 访问修饰符
    • `enum`
    • 集合
      • `List`
      • `ArrayList`
      • `Sort` 排序
      • `Hashtable`
      • `Dictionary`
    • static
    • `readonly` 和 `const`

命名空间

  • 命名空间是一个虚拟的集合
  • 命名空间中只能是 结构体枚举接口 等类型
  • 命名空间防止类名重复,更好的管理类
using System;
using AAA;namespace ConsoleAppDemo
{class MainClass{public static void Main(string[] args){Person.name = "Lee"; // using AAA; 默认会去使用AAA中的PersonBBB.Person.name = "Zhang";Animal.name = "Dog"; // using AAA; 默认会去使用AAA中的Animal}}}namespace AAA {static class Person{public static string name;}static class Animal{public static string name;}
}namespace BBB
{static class Person{public static string name;}namespace CCC{static class Person{public static string name;}}
}

访问修饰符

注意:权限低的访问不了权限高的,权限低的也当不了权限高的的父类

访问修饰符描述
private成员只能在类型的内部访问,这是默认设置
internal成员可在类型的内部或同一程序集的任何类型中访问
protected成员可在类型的内部或从类型继承的任何类型中访问
public成员在任何地方都可以访问
internal protected成员可在类型的内部、同一程序集的任何类型以及从该类型继承的任何类型中访问,与虚构的访问修饰符 internal_or_protected 等效
private protected成员可在类型的内部、同一程序集的任何类型以及从该类型继承的任何类型中访问,相当于虚构的访问修饰符 internal_and_protected。这种组合只能在C#7.2或更高版本中使用

enum

// 枚举中指定元素类型(并且只能配置成整型)及默认值
enum Weekday : int
{Sun = 0, Mon, Tue, Wed, Thu, Fri, Sat,
}internal class Program
{static void Main(string[] args){Console.WriteLine(Weekday.Sun);             // SunConsole.WriteLine(Weekday.Sun == 0);        // TrueConsole.WriteLine((int)Weekday.Sun == 0);   // TrueConsole.WriteLine(Weekday.Mon);             // Mon//Console.WriteLine(Weekday.Mon == 1);      // ErrorConsole.WriteLine((int)Weekday.Mon == 1);   // TrueConsole.WriteLine(Weekday.Tue);             // TueConsole.WriteLine((int)Weekday.Tue);        // 2Console.WriteLine(Weekday.Wed);             // WedConsole.WriteLine(Weekday.Thu);             // ThuConsole.WriteLine(Weekday.Fri);             // FriConsole.WriteLine(Weekday.Sat);             // SatWeekday weekday = Weekday.Sun;// 周日switch (weekday){case Weekday.Sun:Console.WriteLine("周日");break;case Weekday.Mon:Console.WriteLine("周一");break;case Weekday.Tue:Console.WriteLine("周二");break;case Weekday.Wed:Console.WriteLine("周三");break;case Weekday.Thu:Console.WriteLine("周四");break;case Weekday.Fri:Console.WriteLine("周五");break;case Weekday.Sat:Console.WriteLine("周六");break;}}
}

集合

class Person
{public string name;public int age;public Person(string name, int age){this.name = name;this.age = age;}
}

List

using System.Collections.Generic;internal class Program
{static void Main(string[] args){// List persons = new List();// persons.Add(new Person("Lee", 25));// persons.Add(new Person("ZhangSan", 30));List persons = new List{new Person("Lee", 25),new Person("ZhangSan", 30)};// List persons = new List// {//     new Person("Lee", 25),//     123,//     "abc"// };foreach (var person in persons){Console.WriteLine(person.name);Console.WriteLine(person.age);}}
}
 

ArrayList

using System.Collections;internal class Program
{static void Main(string[] args){// ArrayList personList = new ArrayList();// personList.Add(new Person("Lee", 25));// personList.Add(123);// personList.Add("abc");ArrayList personList = new ArrayList{new Person("Lee", 25),123,"abc"};foreach (var person in personList){Console.WriteLine(person); // ConsoleApp.Person 123 abc}}
}

Sort 排序

internal class Program
{static void Main(string[] args){ArrayList personList1 = new ArrayList();personList1.AddRange(new Person[] {new Person("001", "Lee", 25),new Person("002", "张三", 10),new Person("003", "李四", 20),new Person("004", "王五", 20),new Person("005", "赵六", 18),});personList1.Sort();foreach (Person person in personList1){//[001] Lee: 25//[003] 李四: 20//[004] 王五: 20//[005] 赵六: 18//[002] 张三: 10Console.WriteLine($"[{person.id}] {person.name}:{person.age}");}List personList2 = new List();personList2.AddRange(new Person[] {new Person("001", "Lee", 25),new Person("002", "张三", 10),new Person("003", "李四", 20),new Person("004", "王五", 20),new Person("005", "赵六", 18),});personList2.Sort();foreach (Person person in personList2){//[001] Lee: 25//[003] 李四: 20//[004] 王五: 20//[005] 赵六: 18//[002] 张三: 10Console.WriteLine($"[{person.id}] {person.name}:{person.age}");}}
}class Person : IComparable
{public string id;public string name;public int age;public Person(string id, string name, int age){this.id = id;this.name = name;this.age = age;}public int CompareTo(object obj){// 判断obj是不是Personif (obj is Person){// 将obj转型为Person类型Person person = obj as Person;//return age - person.age; // 升序return person.age - age; // 降序}return 0; // 默认}}

Hashtable

using System.Collections;Hashtable obj = new Hashtable();
obj.Add("name", "Lee");
obj.Add("age", 18);
obj.Add(6, true);//Hashtable obj = new Hashtable
//{
//    { "name", "Lee" },
//    { "age", 18 },
//    { 6, true }
//};ICollection keys = obj.Keys;
ICollection values = obj.Values;foreach (object key in keys)
{Console.WriteLine(key); // 6 age name
}foreach (object value in values)
{Console.WriteLine(value); // True 18 Lee
}foreach (DictionaryEntry item in obj)
{Console.WriteLine($"obj[{item.Key}]={item.Value}"); // obj[6]=True obj[age] = 18 obj[name] = Lee
}

Dictionary

using System.Collections.Generic;Dictionary dict = new Dictionary
{{ "name", "Lee" },{ "age", 18 },{ "sex", "男" }
};foreach (KeyValuePair item in dict)
{Console.WriteLine($"dict[{item.Key}]={item.Value}"); // dict[name]=Lee dict[age]=18 dict[sex]=男
}

static

  • 静态的属性是属于类的需要使用类进行访问
  • 非静态的属性是属于对象的需要实例化对象进行访问
    class MainClass
    {public static void Main(string[] args){// 解决打印中文乱码问题Console.OutputEncoding = System.Text.Encoding.UTF8;Person.Forefathers = "类人猿"; // 静态属性归类进行访问Person lee = new Person();lee.name = "ProsperLee"; // 非静态属性归对象进行访问lee.Info(); // 姓名:ProsperLeePerson zhang = new Person {name = "张三",};zhang.Info(); // 姓名:张三lee.ForefathersInfo(); // ProsperLee 的祖先是 类人猿zhang.ForefathersInfo(); // 张三 的祖先是 类人猿}}class Person
    {public static string Forefathers;public string name;public void Info(){Console.WriteLine($"姓名:{name}");}public void ForefathersInfo() {Console.WriteLine($"{name} 的祖先是 {Forefathers}");}}
    

静态类

  • 静态类不能实例化对象 static Xxx{} -> new Xxx() -> Error
  • 静态类中不允许写非静态的成员 static Xxx{ public void Fun(){} } -> Error
  • 静态类只能有一个父类 Object 不能继承也不能被继承

示例

class MainClass
{public static void Main(string[] args){Person.name = "Lee";Console.WriteLine(Person.name); // Person Show ~ LeeConsole.WriteLine(Person.name); // Lee}
}public static class Person {public static string name;static Person() {Console.WriteLine("Person Show ~");}}

用途

  • 一般用来设计工具类(只需要去调用类中的方法去实现功能,没必要实例化的类)

readonlyconst

  • const 常量必须拥有初始值, readonly 可以没有
  • readonly 可以在构造方法中进行赋值修改, const 不可以
class Person
{public readonly int x;// public const int y; // Errorpublic const int y = 100;public Person() {x = 200;// y = 200; // Error}}

相关内容

热门资讯

银行保管实物黄金有哪些要求? 实物黄金作为一种具有高价值和稳定性的资产,很多人会选择将其交由银行保管。银行在保管实物黄金时,有着一...
2026年洞头区铂金项链回收:... 洞头区铂金项链回收是居民将闲置或不再佩戴的铂金材质项链,通过专业机构进行鉴定、估价并变现的消费服务环...
半年劲销118亿元,市占率多城... 2026年上半年,佛山楼市持续回暖。 中指研究院数据显示,上半年佛山商品住宅成交达186.5万平方米...
刘清云互联网运营实践者 刘清云 刘清云,字云飞,80后,学医出身,非同名艺人,目前是河北云荣企业管理咨询有限公司(简称:河北...
曲靖敬创新能源汽车有限责任公司... 天眼查App显示,近日,曲靖敬创新能源汽车有限责任公司成立,法定代表人为刘晓东,注册资本100万人民...
原创 黄... 2026年7月7日央行数据显示,截至6月末我国黄金储备达7544万盎司,环比再添48万盎司,这是自2...
科乐美为免费游戏《寂静岭:短信... IT之家 7 月 8 日消息,科乐美联合发行商 Limited Run Games 为旗下免费游戏《...
碳酸锂遭遇4连跌!锂矿股全线下... 7月9日,A股市场锂矿股全线下跌,其中, 天华新能(300390.SZ)跌超17%, 融捷股份(00...
竞业达董事长被留置,2.6万股... 7月9日,竞业达开盘一字跌停,截至发稿报12.11元/股,最新市值28亿元。 消息面上,7月8日,...
美军发动更大规模打击,伊朗多处... 中东战火重燃,美国军方正在对伊朗发动新一轮规模更大的打击。 当地时间7月8日深夜,伊朗锡里克、阿巴斯...
日本或干预汇市预期升温推动日元... 汇通财经APP讯——美元兑日元周四亚洲时段震荡回落,汇价一度跌至162.45附近。尽管美元整体仍受到...
基因治疗新希望:高风险阿尔茨海... 在一个温暖的家庭客厅里,老人每日都在努力记起熟悉的日程。家人扶着他,眼神里是爱与无奈的交错。医生的提...
如何分析黄金价格的涨跌趋势? 分析黄金价格的波动走向,需要综合多方面因素,从宏观经济、市场供需以及地缘政治等层面进行剖析。 宏观经...
原创 苹... 前几天,有媒体报道称,苹果一直以游说美国政府,希望美国同意它采购长鑫的内存。 因为长鑫被美国拉入了名...
白酒“悦己”时代:汾酒如何与年... 2026年7月5日,武汉,一场名为“汾酒品质生活大赏”的品牌活动在此落地。以“激情汾享,悦己而活”为...
黄金与铂金投资风险哪个更高? 在投资领域,黄金和铂金都是备受关注的贵金属。然而,它们各自的投资风险却有所不同。下面我们就来详细分析...
深圳宇顺华科技有限公司成立 注... 天眼查App显示,近日,深圳宇顺华科技有限公司成立,法定代表人为尹华红,注册资本10万人民币,经营范...
原创 遇... 作者|睿研消费 编辑|Emma 来源|蓝筹企业评论 一碗重庆小面,从广州30平米的街边档口走到港交所...
利润超10亿美元、ARR剑指千... 7 月 9 日消息,SemiAnalysis 昨日发布的最新报告显示,Anthropic 今年第三季...
普通投资者真正需要的基金长啥样... 出品|公司研究室 作者|李颖 2026年已过半,市场仍极致分化。 对普通投资者来说,借助机构的专业优...