vs解决方案-右键属性-启动项目-当前选定内容
面向对象:封装、继承、多态;
1.对象可以叫做类的实例,字段是类的状态,如人这个类有姓名,年龄等字段,类不占内存,对象才占用内存。
2.public(任何地方都可以)、private(本类成员访问)、internal、protected;
3.属性开头字母大写,字段开头字母小写;只用set或者只用get就可以定义只读或者只写属性;可以为set、get设置访问级别;
字段和属性的区别:属性看似字段,不是字段,可以进行非法值控制,可以设置只读;
class Person1
{
//属性
private int age;
public int Age
{
set
{
if (value<0)
{
return;
}
this.age = value;//value代表用户赋值过来的值
}
get
{
return this.age;
}
}
}
class Person2
{//简写方式,编译自动添加private int age;字段,可以直接调用p1.Age=8;
public int Age
{
get;
set;
}
}
4.Demo1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Robot rb1 = new Robot();
rb1.Name = "nima";
rb1.Eat(5);
rb1.SayHello();
while (true)
{
String str=Console.ReadLine();
rb1.Speak(str);
}
Console.ReadKey();
}
}
class Robot
{
public String Name { get; set; }
private int FullLevel { get; set; }
public void SayHello()
{
Console.WriteLine("我叫:"+Name);
}
public void Eat(int foodCount)
{
if (FullLevel > 100)
{
return;
}
FullLevel += foodCount;
}
public void Speak(String str)
{
if (FullLevel<0)
{
Console.WriteLine("饿屎了,不说了");
return;
}
if (str.Contains("姓名")||str.Contains("名字"))
{
this.SayHello();
}
else if (str.Contains("女朋友"))
{
Console.WriteLine("我还小呢");
}
else
{
Console.WriteLine("听不懂");
}
FullLevel--;
}
}
}
5.对象的引用
int \datetime\bool\char等类型都属于值类型(ValueType),赋值的时候是传递拷贝;
普通的对象则是引用类型,赋值的时候是传递引用;
6.构造函数:用来创建对象的特殊函数,并且可以在构造函数中对对象进行初始化。如果不指定构造函数有一个默认的无参构造函数。如果制定了构造函数,则不再有默认的无参构造,如果需要无参构造,则需要自己写;
7.Exception类主要属性:Message、StackTrace;
8.常量名要大写;一定不会变化的值才声明为常量;(const)
static方法中可以调用其他static方法、字段、属性,但是不能调用非static方法、字段、属性。在非static方法中可以调用static的方法、字段;
静态成员不需要new就能使用;静态类一般用来实现一些函数库;
9.namespace用来解决类重名,
10.索引器
定义索引器的方式:
String this[int index]{
get{
return "";
}
set{
}
}
面向对象:封装、继承、多态;
1.对象可以叫做类的实例,字段是类的状态,如人这个类有姓名,年龄等字段,类不占内存,对象才占用内存。
2.public(任何地方都可以)、private(本类成员访问)、internal、protected;
3.属性开头字母大写,字段开头字母小写;只用set或者只用get就可以定义只读或者只写属性;可以为set、get设置访问级别;
字段和属性的区别:属性看似字段,不是字段,可以进行非法值控制,可以设置只读;
class Person1
{
//属性
private int age;
public int Age
{
set
{
if (value<0)
{
return;
}
this.age = value;//value代表用户赋值过来的值
}
get
{
return this.age;
}
}
}
class Person2
{//简写方式,编译自动添加private int age;字段,可以直接调用p1.Age=8;
public int Age
{
get;
set;
}
}
4.Demo1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Robot rb1 = new Robot();
rb1.Name = "nima";
rb1.Eat(5);
rb1.SayHello();
while (true)
{
String str=Console.ReadLine();
rb1.Speak(str);
}
Console.ReadKey();
}
}
class Robot
{
public String Name { get; set; }
private int FullLevel { get; set; }
public void SayHello()
{
Console.WriteLine("我叫:"+Name);
}
public void Eat(int foodCount)
{
if (FullLevel > 100)
{
return;
}
FullLevel += foodCount;
}
public void Speak(String str)
{
if (FullLevel<0)
{
Console.WriteLine("饿屎了,不说了");
return;
}
if (str.Contains("姓名")||str.Contains("名字"))
{
this.SayHello();
}
else if (str.Contains("女朋友"))
{
Console.WriteLine("我还小呢");
}
else
{
Console.WriteLine("听不懂");
}
FullLevel--;
}
}
}
5.对象的引用
int \datetime\bool\char等类型都属于值类型(ValueType),赋值的时候是传递拷贝;
普通的对象则是引用类型,赋值的时候是传递引用;
6.构造函数:用来创建对象的特殊函数,并且可以在构造函数中对对象进行初始化。如果不指定构造函数有一个默认的无参构造函数。如果制定了构造函数,则不再有默认的无参构造,如果需要无参构造,则需要自己写;
7.Exception类主要属性:Message、StackTrace;
8.常量名要大写;一定不会变化的值才声明为常量;(const)
static方法中可以调用其他static方法、字段、属性,但是不能调用非static方法、字段、属性。在非static方法中可以调用static的方法、字段;
静态成员不需要new就能使用;静态类一般用来实现一些函数库;
9.namespace用来解决类重名,
10.索引器
定义索引器的方式:
String this[int index]{
get{
return "";
}
set{
}
}