域(C#)

C# 静态与非静态字段示例
  using System; using System.Collections.Generic; using System.Text; //此例演示了静态域和非静态域的区别 namespace Field { public class Count { //静态域,为所有类的实例所共享。类每进行一次实例化,它的值就加1,这个操作在构造函数中实现。 static int count;//对类的实例数进行计数 //非静态域 int number;//存放当前实例的编号 public Count() { count = count + 1; number = count; } public void show() { Console.WriteLine("object{0};count={1}", number, count); } } class Program { static void Main(string[] args) { Count a = new Count(); a.show(); Console.WriteLine(); Count b = new Count(); a.show(); b.show(); Console.WriteLine(); Count c = new Count(); a.show(); b.show(); c.show(); Console.ReadKey(); } } }//从此例可看出,无论何时,类的所有实例的count值都是相同的,说明它们共享数据,count只有一个副本。而每个实例的标号都是不同的,一旦实例化,标号就不再变化了。
### C# 中的作用概念及其用法 在 C# 编程语言中,作用(Scope)是指变量、方法或其他实体可访问的范围。理解作用对于编写清晰、高效的代码至关重要。 #### 变量作用 C# 的变量作用主要分为以下几个层次: 1. **局部作用** 局部变量是在方法或语句块内部声明的变量,仅在其所在的代码块内可见。一旦超出该代码块,则无法再访问这些变量。 ```csharp void ExampleMethod() { int localVar = 10; // 局部变量 Console.WriteLine(localVar); // 访问成功 } ``` 2. **类级作用** 类级别的成员(字段、属性、方法等)在整个类范围内都可用,除非受到访问修饰符的影响[^1]。 ```csharp public class MyClass { private int field = 42; public void PrintField() { Console.WriteLine(field); // 成功访问类级别成员 } } ``` 3. **命名空间作用** 命名空间用于组织代码并防止名称冲突。同一命名空间中的类型可以直接相互引用,而无需完全限定名称。 ```csharp namespace MyNamespace { public class ClassA {} public class ClassB { public void Method() { var a = new ClassA(); // 同一命名空间下直接使用 } } } ``` #### 方法和类型的可见性 除了变量外,方法和类型的可见性也由其所在的作用决定。以下是常见的几种情况: 1. **私有方法/字段** 私有的方法或字段只能在同一类内部访问,外部不可见。 ```csharp public class PrivateExample { private void PrivateMethod() {} public void PublicMethod() { PrivateMethod(); // 调用成功 } } class Program { static void Main() { var example = new PrivateExample(); // example.PrivateMethod(); // 错误:无法访问私有成员 } } ``` 2. **受保护的方法/字段** 受保护的成员可以在派生类中访问,这适用于继承场景下的设计需求[^3]。 ```csharp public class BaseClass { protected void ProtectedMethod() {} } public class DerivedClass : BaseClass { public void CallProtected() { ProtectedMethod(); // 调用成功 } } ``` #### 构造函数与初始化表达式的作用 构造函数的作用与其所属的类一致。通过 `this()` 语法,次构造函数可以调用主构造函数完成对象初始化[^2]。 ```csharp public class Person(string name, int age) { public string Name => name; public int Age => age; public Person() : this("Unknown", 0) {} // 使用 this() 初始化默认值 } ``` #### LINQ 和扩展方法的作用 LINQ 提供的一系列方法(如 `Where`、`Select` 等)实际上是定义在静态类 `System.Linq.Enumerable` 上的扩展方法。它们可以通过引入相应的命名空间来使其实现全局可用。 ```csharp using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<int> numbers = new List<int> { 1, 2, 3 }; var result = numbers.Where(n => n % 2 == 0); } } ``` #### 委托与泛型的作用 委托类似于类型安全的函数指针,在整个程序集范围内有效。只要正确导入相关命名空间,即可跨文件使用特定的委托类型[^4]。 ```csharp delegate void MyDelegate(); namespace DelegateExample { public class Test { public static void Execute(MyDelegate del) { del?.Invoke(); } } } // 在其他地方 Test.Execute(() => Console.WriteLine("Callback executed!")); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值