c#中创建类(更新中)
类是最常见的一种引用类型,最简单的定义如下
class YouClassNam
{}
复杂的类可能包含一下内容
类属性 类属性以及类修饰符. 非嵌套的类修饰符有:public,internal,abstract,sealed,static, unsafe,partial
类名 各种类型参数,唯一基类,多个接口
花括号内 类成员(方法,成员属性,索引器,事件,字段,构造方法,运算符函数,嵌套类型和终止器)
1---->字段
字段是类或结构体中的变量.
字段不一定要初始化,没有初始化的字段会赋一个默认值(0,\0,null,false).字段初始化语句在构造方法之前执行
只读 字段只能在声明时或者在其所属的类构造方法中被赋值,且赋值后不能改变.
可以同事声明多个字段
class MyOne
{
static readonly int leg=8,eye=2;
string name;
public int Age=10;
}
以下修饰符可以用来修饰字段
| 静态修饰符 | static |
| 访问权限修饰符 | public internal private protected |
| 继承修饰符 | new |
| 不安全代码修饰符 | unsafe |
| 只读修饰符 | readonly |
| 跨线程访问修饰符 | volatile |
2---->方法
方法是用一组语句实现实现某个行为.
方法可以应一下修饰符修饰
| 静态修饰符 | static |
| 访问权限修饰符 | public internal private protected |
| 继承修饰符 | new abstract virtual override sealed |
| 部分方法修饰符 | partial |
| 非托管代码修饰符 | unsafe extern |
(1)重载方法
确保方法签名相同,就可以在类中重载方法(多方法公用同一方法名)
void Foo(int x){...}
void Foo(double x){...}
void Foo(int x,double y){...}
void Foo(double x,int y){...}
(2)值传递和引用传递
参数是值传递还是引用传递,也是方法签名的一部分.例如Foo(int)和Foo(ref int)或Foo(out int)可以同时出现在一个类中,但是Foo(ref int)和Foo(out int)不能同时出现在同一个类中
void Foo(int x){...}
void Foo(ref int x){...}//此处正确
void Foo(out int x){...}//此刻错误
3---->构造方法
构造方式是执行类或者结构体的初始化代码.
构造方法和方法定义类似,区别仅在于构造方法名和返回值只能和封装它的类相同
public class Person
{
string name; //定义字段
public Person (string n)//定义构造方法
{
name=n; //初始化字段
}
}
...
Person p=new Person("HanMei");//调用构造方法
构造方法支持以下修饰符
| 访问权限修饰符 | public internal private protected |
| 非托管代码修饰符 | unsafe extern |
(1)重载构造方法
为避免重复,一个构造方法可以用this关键字调用另一个构造方法
当一个构造方法调用另一个时,被调用的构造方法先执行.
using System;
namespace 构造函数重载
{
public class Person
{
private string _name;
private int _age;
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public Person(string name)
{
this.Name = name;
}
public Person(string name, int age):this(name)
{
this.Age = age;
}
}
}
(2)隐式无参数构造方法
默认c#编译器会自动为木有显式定义构造方法的类生成构造方法.一旦显示定义构造方法,系统将不再自动生成无参构造方法,即使显示定义无参构造函数,也不是原来的了
public class Person
{
public Person(){}
}
(3)构造方法和字段初始化顺序
字段初始化按声名的先后顺序,在构造方法之前执行!!!!!!!!!
首先,在声名字段的时候赋予初始值:
class Person
{
int a=10;//第一个被初始化
int b =20;//第二个被初始化
}
(4)非公有构造方法
通常定义非公有构造方法的原因是为了在一个静态方法中控制类实例的创建(单例????).
静态方法可以用于从池中返回类对象,而不必创建一个新对象实例,或者根据不同的输入属性返回不同的子类.
public class Person
{
Person() { }//私有构造方法
public static Person Creat(...)
{
//定义逻辑,返回Person的实例
.......
}
}
this引用指的是引用实例自身,下面,方法Marry将Person的name字段设定为this.
c#中创建类(更新中)的更多相关文章
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- 在mysql数据库中创建Oracle数据库中的scott用户表
在mysql数据库中创建Oracle数据库中的scott用户表 作者:Eric 微信:loveoracle11g create table DEPT ( DEPTNO int(2) not null, ...
- 在efcore 中创建类 通过实现IEntityTypeConfiguration<T>接口 实现实体类的伙伴类 实现FluentApi
1 创建实体类: public partial class NewsCategory : IAggregationRoot { public NewsCategory() { } public Gui ...
- eclipse中创建类和方法自动注释
<?xml version="1.0" encoding="UTF-8"?><templates><template autoin ...
- Python中的类(中)
上一篇介绍了Python中类相关的一些基本点,本文看看Python中类的继承和__slots__属性. 继承 在Python中,同时支持单继承与多继承,一般语法如下: class SubClassNa ...
- 【java学习】实践中总结--持续更新中
目录: 一些定义 配置环境 相关语法 1.一些定义 java中DO的含义: https://blog.csdn.net/canot/article/details/51698047 DAO 中包含了各 ...
- Typescript中的类 Es5中的类和静态方法和继承(原型链继承、对象冒充继承、原型链+对象冒充组合继承)
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- 在eclipse中创建Web项目中没有web.xml的解决方法
右键点击项目 → “Java EE Tool” → “Generate Deployment descriptor stub” 即可生成web.xml文件
- ES6中的类
前面的话 大多数面向对象的编程语言都支持类和类继承的特性,而JS却不支持这些特性,只能通过其他方法定义并关联多个相似的对象,这种状态一直延续到了ES5.由于类似的库层出不穷,最终还是在ECMAScri ...
随机推荐
- js showModalDialog打开新的页面给原页面传值问题
a.html中打开一个新页面b.html,b.html页面给a.html中的input传一个值并将value赋给input框. a.html: <html> <head> ...
- DevExpress MessageBox 弹出框 底层类
效果图: 前台调用: //图一的前台调用 MessageBox.Show("测试", "标题", MessageBoxButtons.OK); //图二的前台调 ...
- springboot 详细配置2
# =================================================================== # COMMON SPRING BOOT PROPERTIE ...
- java web知识点总结
创建与销毁 ServletContext HttpRequest HttpSession 1.ServletContext 创建:启动服务器时就创建,服务为每个web应用创建该项目的ServleCon ...
- Script Form
Script Form 是SAP所提供的一款强大的报表设设计工具. 一.Script Form主要工具包括如下: 1)Form Painter:格式绘制器,用于格式的设定.TCoce:SE71. 2) ...
- (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明
原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...
- Ubuntu设置目录的读写权限(Linux命令chmod 777 dirName)
更改文件所有者 sudo chown system_username /location_of_files_or_folders 更改文件的权限 鼠标右按钮点击文件/目录 -> 属性 权限 分页 ...
- careercup-数学与概率 7.5
7.5 在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分.假定正方形的上下两条边与x轴平行. 解法: 要将两个正方形对半分,这条线必须连接两个正方形的中心点.利用slope=(y1 ...
- iphone4s 关于大于400M的视频无法拷贝的问题
方法有二: 1.可以用win7等高版本的系统拷出 2.可以用Itools工具导出
- UIStackView 看我就够了
介绍 UIStackView 是 iOS9新增的一个布局技术.熟练掌握相当节省布局时间. UIStackView 是 UIView 的子类,是用来约束子控件的一个控件.但他的作用仅限于此,他不能用来呈 ...