没有注册公司可以建网站吗,便宜建网站,有经验的佛山网站设计,wordpress 架构原理字段声明字段字段初始化静态字段常量字段只读字段字段的访问然而 属性声明属性自动实现的属性只读属性只写属性属性的逻辑处理属性的访问修饰符属性和字段的区别属性的用途总结 索引器索引器的基本语法使用索引器索引器的关键点语法参数访问和设置异常处理性能重载使用场景封装… 字段声明字段字段初始化静态字段常量字段只读字段字段的访问然而 属性声明属性自动实现的属性只读属性只写属性属性的逻辑处理属性的访问修饰符属性和字段的区别属性的用途总结 索引器索引器的基本语法使用索引器索引器的关键点语法参数访问和设置异常处理性能重载使用场景封装再举个例子 总结 字段
众嗦粥汁字段又叫成员变量 在C#中字段Fields是类的成员用于存储数据。字段可以是任何数据类型包括基本数据类型如 int, double, bool 等和引用类型如类、数组等。字段可以是静态的static属于类的而不是类的实例或实例的属于类的对象。
以下是一些关于C#字段的关键点
声明字段
字段是在类中声明的并且可以有访问修饰符如 public, private, protected, internal 等来指定其可访问性。
public class Person
{public string Name; // 公共字段private int age; // 私有字段protected bool isStudent; // 受保护的字段只能在此类及其派生类中访问
}字段初始化
字段可以在声明时初始化也可以在构造函数中初始化。
public class Person
{public string Name Unknown; // 字段初始化public int Age { get; set; } // 自动属性具有默认值0public Person(string name, int age){Name name;Age age; // 构造函数中初始化}
}静态字段
静态字段属于类本身而不是类的任何特定实例。它们使用 static 关键字声明。
public class School
{public static int StudentCount 0; // 静态字段public School(){StudentCount; // 增加学生计数}
}常量字段
使用 const 关键字声明的字段是常量它们的值在编译时已知并且在运行时不能更改。
public class Constants
{public const double Pi 3.14159; // 常量字段
}只读字段
只读字段使用 readonly 关键字声明它们可以在声明时或构造函数中初始化但之后不能被修改。
public class Product
{public readonly string ProductCode; // 只读字段public Product(string code){ProductCode code;}
}字段的访问
字段可以通过对象实例访问对于实例字段或直接通过类名访问对于静态字段。
Person person new Person();
person.Name Alice; // 访问实例字段School.StudentCount 10; // 访问静态字段字段是类定义中最基本的数据存储单元它们提供了一种简单的方式来存储和操作数据。
然而
为了封装和数据保护通常建议使用属性Properties而不是直接访问字段。属性提供了一种更灵活的方式来控制对字段的访问并且可以在访问或设置值时添加额外的逻辑。 属性
在C#中属性Properties是一种成员它们提供了一种访问和设置字段值的方法同时允许你添加逻辑来验证或处理这些值。属性可以被视为字段的替代品但它们提供了更多的控制和灵活性。
属性通常包含两个部分get 访问器和 set 访问器。get 访问器返回属性的值而 set 访问器设置属性的值。属性可以是只读或只写也可以是读写的。
以下是一些关于C#属性的关键点
声明属性
属性使用 get 和 set 块声明它们定义了如何获取和设置属性值。
public class Person
{private string _name; // 私有字段用于存储属性值public string Name{get { return _name; }set { _name value; }}
}自动实现的属性
C# 允许你使用自动实现的属性这样编译器会自动生成一个私有字段来存储属性的值。
public class Person
{public string Name { get; set; }
}只读属性
如果只需要 get 访问器属性可以是只读的。
public class Person
{public string Name { get; }
}只写属性
如果只需要 set 访问器属性可以是只写的。
public class Person
{private string _name;public string Name{set { _name value; }}
}属性的逻辑处理
可以在 set 访问器中添加逻辑比如验证输入值。
public class Product
{private decimal _price;public decimal Price{get { return _price; }set{if (value 0)throw new ArgumentOutOfRangeException(价格不能为负数。);_price value;}}
}属性的访问修饰符
属性的 get 和 set 访问器可以有不同的访问修饰符以控制它们的可见性。
public class Product
{public decimal Price{private get { return _price; }protected set { _price value; }}
}属性和字段的区别
属性允许你控制对数据的访问而字段是直接的数据存储。属性通常用于封装字段提供数据验证或逻辑处理。
属性的用途
属性通常用于封装数据提供数据验证以及实现数据绑定等。
总结
属性是C#中非常重要的特性它们提供了一种安全和灵活的方式来访问和修改对象的状态。通过使用属性你可以隐藏实现细节同时提供对数据的控制。 索引器
在C#中索引器Indexers是一种特殊的属性它允许你使用数组索引的语法来访问对象的元素。索引器可以有多个参数这使得它们非常适合用来实现类似字典或数据库表的访问模式。
索引器的基本语法
public class MyClass
{private Dictionaryint, string _data new Dictionaryint, string();// 索引器声明public string this[int index]{get{if (_data.TryGetValue(index, out string value))return value;elsethrow new KeyNotFoundException(索引未找到。);}set{_data[index] value;}}
}使用索引器
class Program
{static void Main(){MyClass myObj new MyClass();// 使用索引器设置元素myObj[1] Hello;myObj[2] World;// 使用索引器获取元素Console.WriteLine(myObj[1]); // 输出: HelloConsole.WriteLine(myObj[2]); // 输出: Worldtry{// 尝试访问不存在的索引Console.WriteLine(myObj[3]);}catch (KeyNotFoundException ex){Console.WriteLine(ex.Message);}}
}索引器的关键点
语法
索引器的语法与属性类似但使用了 this 关键字后面跟着参数列表。
参数
索引器可以有一个或多个参数这些参数用于确定要访问或设置的元素。
访问和设置
索引器可以有 get 和 set 访问器允许你获取和设置元素的值。
异常处理
在 get 访问器中如果尝试访问不存在的索引可以抛出异常如 KeyNotFoundException。
性能
使用索引器可以提供快速的数据访问特别是当你使用内部数据结构如字典来存储元素时。
重载
你可以为同一个类定义多个索引器只要它们的参数列表不同。
使用场景
索引器非常适合实现类似数组或字典的数据结构允许用户通过索引来访问和修改数据。
封装
索引器可以封装内部数据结构隐藏实现细节只暴露必要的接口给用户。
再举个例子
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace forCode2019 {class Program {static void Main(string[] args) {Demo d new Demo(3);d[2] 1;d[1] d[2] * 5;d[0, 1] 100;Console.WriteLine(d[1]);Console.ReadKey();}}class Demo {int[] a;public Demo(int size) {a new int[size];}public int this[int index] {get {return a[index];}set {a[index] value;}}public int this[int x, int y] {get {return a[xy];}set {a[xy] value;}}}
}
总结
索引器是C#中一个强大的特性它提供了一种自然和直观的方式来访问和操作对象的元素。通过使用索引器你可以创建更加灵活和强大的数据结构。