有谁能够将C#类中的get 和set 函数的具体用法说透一点呀?
C#语言有两个函数--一个赋值函数(get),一个取值函数(set),这从它生成的中间语言代码可以清晰地看到。C#不提倡将域的保护级别设为public而使用户在类外任意操作--那样太不OO,或者具体点说太不安全!对所有有必要在类外可见的域,C#推荐采用属性来表达。属性不表示存储位置,这是属性和域的根本性的区别。下面是一个典型的属性设计:
using System;
class MyClass
{
int integer;
public int Integer
{
get {return integer;}
set {integer=value;}
}
}
class Test
{
public static void Main()
{
MyClass MyObject=new MyClass();
Console.Write(MyObject.Integer);
MyObject.Integer++;
Console.Write(MyObject.Integer);
}
}
一如我们期待的那样,程序输出0 1。我们可以看到属性通过对方法的包装向程序员提供了一个友好的域成员的存取界面。这里的value是C#的关键字,是我们进行属性操作时的set的隐含参数,也就是我们在执行属性写操作时的右值。
属性提供了只读(get),只写(set),读写(get和 set)三种接口操作。对域的这三种操作,我们必须在同一个属性名下声明,而不可以将它们分离,看下面的实现:
class MyClass
{
private string name;
public string Name
{
get { return name; }
}
public string Name
{
set { name = value; }
}
}
上面这种分离Name属性实现的方法是错误的!我们应该像前面的例子一样将他们放在一起。值得注意的是三种属性(只读,只写,读写)被C#认为是同一个属性名,看下面的例子:
class MyClass
{
protected int num=0;
public int Num
{
set
{
num=value;
}
}
}
class MyClassDerived: MyClass
{
new public int Num
{
get
{
return num;
}
}
}
class Test
{
public static void Main()
{
MyClassDerived MyObject = new MyClassDerived();
//MyObject.Num= 1; //错误 !
((MyClass)MyObject).Num = 1;
}
}
我们可以看到MyClassDerived中的属性Num-get{}屏蔽了MyClass中属性Num-set{}的定义。
当然属性远远不止仅仅限于域的接口操作,属性的本质还是方法,我们可以根据程序逻辑在属性的提取或赋值时进行某些检查,警告等额外操作,看下面的例子:
class MyClass
{
private string name;
public string Name
{
get { return name; }
set
{
if (value==null)
name="Microsoft";
else
name=value;
}
}
}
由于属性的方法的本质,属性当然也有方法的种种修饰。属性也有5种存取修饰符,但属性的存取修饰往往为public,否则我们也就失去了属性作为类的公共接口的意义。除了方法的多参数带来的方法重载等特性属性不具备外, virtual, sealed, override, abstract等修饰符对属性与方法同样的行为,但由于属性在本质上被实现为两个方法,它的某些行为需要我们注意。看下面的例子:
abstract class A
{
int y;
public virtual int X
{
get { return 0; }
}
public virtual int Y
{
get { return y; }
set { y = value; }
}
public abstract int Z { get; set; }
}
class B: A
{
int z;
public override int X
{
get { return base.X + 1; }
}
public override int Y
{
set { base.Y = value 0? 0: value; }
}
public override int Z
{
get { return z; }
set { z = value; }
}
}
这个例子集中地展示了属性在继承上下文中的某些典型行为。这里,类A由于抽象属性Z的存在而必须声明为abstract。子类B中通过base关键字来引用父类A的属性。类B中可以只通过Y-set便覆盖了类A中的虚属性。
静态属性和静态方法一样只能存取类的静态域变量。我们也可以像做外部方法那样,声明外部属性。
求解get_maincat函数的用法
get_maincat()三个参数第一个参数代表parentid第二个参数代表所有的分类第三个参数 代表 分类的级别
C++,cin.get()用法
cin对象有一个名为get的内置函数很有帮助。因为get函数是内置在cin对象中的,所以可称之为cin的一个成员函数。get成员函数读取单个字符,包括任何白色空格字符。如果程序需要存储正在读取的字符,则可以通过以下任意一种方式调用get成员函数。
cin.get函数执行时,它开始从先前输入操作停止的键盘缓冲区读取,并发现了换行符,所以它无须等待用户输入另一个值。这种问题最直接的解决办法是使用cin.ignore函数。
假设cin是正被读入字符的char变量的名称:
cin.get(ch);
ch=cin.get();
如果程序正在使用get函数简单地暂停屏幕直到按回车键,并且不需要存储字符,则该函数也可以这样调用:
cin.get();
在所有这3个编程语句中,get函数调用的格式实际上是一样的。首先是对象的名称,在此示例中它是cin。然后是一个句点,其后是被调用的成员函数的名称,在这里当然就是get。语句的末尾是一组括号和一个表示结束的分号。这是调用任何成员函数的基本格式。
扩展资料
例:
//Thisprogramdemonstratesthreewaystousecin.get()
//topauseaprogram.
#includeiostream
usingnamespacestd;
intmain()
{
charch;
cout"Thisprogramhaspaused.PressEntertocontinue.";
cin.get(ch);
cout"Ithaspausedasecondtime.PleasepressEnteragain.";ch=cin.get();
cout"Ithaspausedathirdtime.PleasepressEnteragain.";
cin.get();
cout"Thankyou!\n";
return0;
}
类中的只有一个数据对象作为返回值的get函数做什么用
get 成员函数用来获得私有数据成员的数据。
当你需要在程序获得私有数据成员数据的时候,需要用 get 成员函数来获得。
因为外部不能直接访问类的私有成员,只能通过类的公有成员函数访问类的私有成员。
所以需要定义一个公有 get 成员函数来返回类的私有数据成员。
{ return 0; } } public virtual int Y { get { return y; } set { y = value; } } public abstract int Z { get;
t { return num; } }}class Test{ public static void Main() { MyClassDerived MyObject = new MyClassDerived();
; } }}class Test{ public static void Main() { MyClassDerived MyObject = new MyClassDerived(); //MyObject.Num= 1;
子: class MyClass{ private string name; public string Name { get { return name; } set { if (value==null)