當前位置:首頁 » 密碼管理 » getset訪問器

getset訪問器

發布時間: 2022-05-18 09:25:59

⑴ C#中的get和set訪問器怎麼理解和使用

轉自http://soriq.100steps.net/blog/index.php
屬性的訪問器包含與獲取(讀取或計算)或設置(寫)屬性有關的可執行語句。訪問器聲明可以包含 get 訪問器或 set 訪問器,或者兩者均包含。聲明採用下列形式之一:

get {}

set {}

get 訪問器
get 訪問器體與方法體相似。它必須返回屬性類型的值。執行 get 訪問器相當於讀取欄位的值。以下是返回私有欄位 name 的值的 get 訪問器:

private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
}
當引用屬性時,除非該屬性為賦值目標,否則將調用 get 訪問器讀取該屬性的值。例如:

Employee e1 = new Employee();
...
Console.Write(e1.Name); // The get accessor is invoked here
get 訪問器必須在 return 或 throw 語句中終止,並且控制不能超出訪問器體。

set 訪問器
set 訪問器與返回 void 的方法類似。它使用稱為 value 的隱式參數,此參數的類型是屬性的類型。在下例中,set 訪問器被添加到 Name 屬性:

public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
當對屬性賦值時,用提供新值的參數調用 set 訪問器。例如:

e1.Name = "Joe"; // The set accessor is invoked here
在 set 訪問器中對局部變數聲明使用隱式參數名 (value) 是錯誤的。

備注
屬性按如下方式,根據所使用的訪問器進行分類:

只帶有 get 訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。
只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
同時帶有 get 和 set 訪問器的屬性為讀寫屬性。
在屬性聲明中,get 和 set 訪問器都必須在屬性體的內部聲明。

使用 get 訪問器更改對象的狀態是一種錯誤的編程樣式。例如,以下訪問器在每次訪問 number 欄位時都產生更改對象狀態的副作用。

public int Number
{
get
{
return number++; // Don't do this
}
}
可以將 get 訪問器用於返回欄位值,或用於計算欄位值並將其返回。例如:

public string Name
{
get
{
return name != null ? name : "NA";
}
}
在上述代碼段中,如果不對 Name 屬性賦值,它將返回值 NA。

示例 1
此例說明如何訪問基類中被派生類中具有同一名稱的另一個屬性隱藏的屬性。
// property_hiding.cs
// Property hiding
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}
輸出
Name in the derived class is: John
Name in the base class is: Mary
以下是上例中顯示的重點:
派生類中的屬性 Name 隱藏基類中的屬性 Name。在這種情況下,派生類的該屬性聲明使用 new 修飾符:
public new string Name
{
...
轉換 (BaseClass) 用於訪問基類中的隱藏屬性:
((BaseClass)d1).Name = "Mary";

⑵ C#屬性定義。GET與SET訪問器是怎麼一回事,

1.屬性的聲明
總的來說,只要注意屬性聲明或者在使用是的一些規定就可以了,還有最為重要的:屬性的操作過程。
聲明是用如下語法:

類型 屬性名 {訪問器聲明}

注意:屬性還可以跟方法一樣有參數,當然限制的是,參數必須是值參數外,參數的列表的聲明與方法的一樣。
訪問器包括包含get訪問器和set訪問器

2.get訪問器
get訪問器相當於一個無參數方法,該方法具有屬性類型的返回值以及屬性相同的修飾符,而執行get訪問器就是相當於讀取了欄位的值。需要注意的是,在get訪問器中,返回值作為屬性值提供給調用表達式。
例如:

private int a ;
public int A
{
get{return a;}
}

注意:當引用屬性時,除非該屬性為賦值目標,否則將調用get訪問器讀取該屬性的值。(在沒看到上面這句話之前,也很疑惑,調用時怎麼讓對象知道是get呢,還是set呢?)

3.set訪問器
set訪問器相當於一個void方法,該方法具有單個屬性類型的值參數,以及包含屬性相同的修飾符。
在set訪問器中,新的屬性值通過set訪問器的參數傳遞。值得注意的是,在通過新的屬性值賦值給欄位時,顯示參數傳遞必須聲明為與該屬性相同的數據類型,當然也可以使用隱式參數,不加聲明時,編譯器將使用隱式參數Value來表示賦給屬性的新值。set訪問器隱式具有名為value的參數(value),此參數的類型是屬性的類型。
例如:
private int a ;
public int A
{
set{a=value;}
}
屬性按如下方式,根據所使用的訪問器進行分類:
只帶有get訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。
只帶有set訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
同時帶有get和set訪問器的屬性為讀寫屬性!
注意:在屬性聲明時,get和set訪問器都必須在屬性體內部聲明。
4.調用get訪問器在概念上等效於讀取欄位的值。但是並不是單單被編寫成只有返回存儲在欄位中的值,事實上可以通過訪問多個欄位的值來計算出用戶所需要的值,然後作為返回值,返回調用的表達式。
例如:
private int a ;
private int b ;
public int AAA
{
get{return (a*b/10)}
}

⑶ c#get和set用法詳解

1、當引用屬性時,除非該屬性為賦值目標,否則將調用get訪問器讀取該屬性的值。

例如:Employeee1=newEmployee();...Console.Write(e1.Name);//

訪問器必須在return或throw語句中終止,並且控制不能超出訪問器體。

2、set訪問器與返回void的方法類似,它使用稱為value的隱式參數,此參數的類型是屬性的類型。

set訪問器被添加到Name屬性:

publicstringName

{

get{returnname;}

set{name=value;}

}

當對屬性賦值時,用提供新值的參數調用set訪問器。

例如:e1.Name="Joe";//Thesetaccessorisinvokedhere在set訪問器中對局部變數聲明使用隱式參數名(value)是錯誤的。

(3)getset訪問器擴展閱讀

get的使用

publicclassCar

{

publicstringColor

{

get{

if(this.viewstate["color"]!=null)

{

returnthis.viewstate["color"];

}

return"":

}

set{this.viewstate["color"];=value;}

}

}

⑷ 誰來簡單說說C#中get {}set {}是什麼回事,怎麼用

屬性的訪問器包含與獲取(讀取或計算)或設置(寫)屬性有關的可執行語句。訪問器聲明可以包含 get 訪問器或 set 訪問器,或者兩者均包含;
自己的理解:就相當於 類里的欄位 要設置成私有的(比如name),但是別的要訪問你 然後就弄了公有的欄位(Name),這樣別人就可以訪問你。這個公有的欄位其實是對應類里的私有欄位;一個過渡一樣的作用;給Name賦值,其實就是給name賦值,取Name其實就是取name;體現一種封裝的思想;大概意思就是這樣,可能描述的不是很專業。你再對應的看一段程序,就會明白了
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}

⑸ C#中的get和set訪問器怎麼理解和使用求解答

C#為了提高安全性, 推薦將私有變數進行封裝, 外界通過屬性來訪問私有成員變數, 他提供了兩個訪問其
get訪問其是獲取成員變數里的值, set訪問其是存入值

⑹ 我是一個c#的初學者,對於get訪問器和set訪問器的作用不太明白,請知道的朋友幫我講一下,謝謝!

get和set是一種特定的方法,get用來從對象中讀取數據,而set用來向欄位寫入數據,
將外界的數據寫入欄位時,c#使用value表示輸入的數據。
屬性的讀寫控制
屬性中的get和set可以只用一個,如果只有get而沒有set,那麼這個屬性只可讀出,不可寫入;
如果只有set而沒有get,那麼這個屬性是只寫入,不可讀出。
設計欄位是為了便於內部方法使用,而盡量與外界隔絕;
設計屬性考慮的是方便外界的使用,但是不讓外界知道的數據一律不給。

⑺ c#中的get set 是什麼意思,我需要最詳細的解釋。

屬性的訪問器包含與獲取(讀取或計算)或設置(寫)屬性有關的可執行語句。訪問器聲明可以包含 get 訪問器或 set 訪問器,或者兩者均包含。聲明採用下列形式之一:

get {}

set {}

get 訪問器
get 訪問器體與方法體相似。它必須返回屬性類型的值。執行 get 訪問器相當於讀取欄位的值。以下是返回私有欄位 name 的值的 get 訪問器:

private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
}
當引用屬性時,除非該屬性為賦值目標,否則將調用 get 訪問器讀取該屬性的值。例如:

Employee e1 = new Employee();
...
Console.Write(e1.Name); // The get accessor is invoked here
get 訪問器必須在 return 或 throw 語句中終止,並且控制不能超出訪問器體。

set 訪問器
set 訪問器與返回 void 的方法類似。它使用稱為 value 的隱式參數,此參數的類型是屬性的類型。在下例中,set 訪問器被添加到 Name 屬性:

public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
當對屬性賦值時,用提供新值的參數調用 set 訪問器。例如:

e1.Name = "Joe"; // The set accessor is invoked here
在 set 訪問器中對局部變數聲明使用隱式參數名 (value) 是錯誤的。

備注
屬性按如下方式,根據所使用的訪問器進行分類:

只帶有 get 訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。
只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
同時帶有 get 和 set 訪問器的屬性為讀寫屬性。
在屬性聲明中,get 和 set 訪問器都必須在屬性體的內部聲明。

使用 get 訪問器更改對象的狀態是一種錯誤的編程樣式。例如,以下訪問器在每次訪問 number 欄位時都產生更改對象狀態的副作用。

public int Number
{
get
{
return number++; // Don't do this
}
}
可以將 get 訪問器用於返回欄位值,或用於計算欄位值並將其返回。例如:

public string Name
{
get
{
return name != null ? name : "NA";
}
}
在上述代碼段中,如果不對 Name 屬性賦值,它將返回值 NA。

示例 1
此例說明如何訪問基類中被派生類中具有同一名稱的另一個屬性隱藏的屬性。

// property_hiding.cs
// Property hiding
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}

輸出
Name in the derived class is: John
Name in the base class is: Mary
以下是上例中顯示的重點:
派生類中的屬性 Name 隱藏基類中的屬性 Name。在這種情況下,派生類的該屬性聲明使用 new 修飾符:
public new string Name
{
...
轉換 (BaseClass) 用於訪問基類中的隱藏屬性:
((BaseClass)d1).Name = "Mary";

⑻ set和get在函數中起的什麼作用

get 屬性訪問器用於返回屬性值,而 set 訪問器用於分配新值。這些訪問器可以有不同的訪問級別。有關更多信息,請參見訪問器可訪問性。

value 關鍵字用於定義由 set 索引器分配的值。

不實現 set 方法的屬性是只讀的。

----------------------------------------------------------------------------------------------
這是定義類的屬性或索引的
這樣的話,你就可以 Food.Pos來設置或獲得類Food的Pos屬性
一般是這樣定義的
private Point pos;
private Image blockFood = Image.FromFile("images/block01.gif");

public Point Pos
{
get
{
return pos;
}
set
{
pos = value;
}
}
類裡面的變數一般處於安全性考慮建議不要設置成Public的,但是如果在別的類裡面要給private的pos賦值怎麼辦?
這樣就可以用類的屬性來實現
Food.Pos=new Point(10,10);
你還可以在set訪問器裡面進行判斷操作
public Point Pos
{
get
{
return pos;
}
set
{
if (pos.X > 10 && pos.Y > 10)
{
pos = value;
}
else
{
pos = new Point(10,10);
}
}
}

⑼ 為什麼提倡用get/set訪問器來訪問對象的內部數據

1. 良好的封裝能夠減少耦合。
2. 類內部的結構可以自由修改。
3. 可以對成員變數進行更精確的控制。
4. 隱藏信息,實現細節。這就是java的封裝。

⑽ C#中的get 訪問器 和set訪問器有什麼用

C#允許我們對一個屬性的get和set訪問器使用不同的訪問級別修飾符:

class Customer
{
private string name;
...
public string Name
{
get{return this.name;}
internal set(this.name=value;}
}
...
}

一些注意點

屬性訪問器(get或set)上應用的訪問修飾符必須「小於」屬性上應用的訪問修飾符;「小於」的意思即「更嚴格」,例如protected小於public。

只能在一個屬性訪問器(get或set)上指定比屬性上的訪問修飾符「更小」的訪問修飾符。

對於介面中屬性的聲明,不能給屬性訪問器(get或set)指定任何訪問修飾符,只能默認為public。

屬性訪問器保護級別的變化規則完全適用於C#的索引器。

熱點內容
精通腳本 發布:2025-05-20 14:42:56 瀏覽:383
東方財富經典版如何更改密碼 發布:2025-05-20 14:42:43 瀏覽:942
砸口紅解壓 發布:2025-05-20 14:41:02 瀏覽:509
配置sp失敗怎麼辦 發布:2025-05-20 14:35:08 瀏覽:178
java學到什麼程度 發布:2025-05-20 14:31:54 瀏覽:479
壓縮誤差分析 發布:2025-05-20 14:27:53 瀏覽:97
每秒上億次訪問伺服器怎麼處理 發布:2025-05-20 14:10:07 瀏覽:314
按鍵精靈資料庫操作 發布:2025-05-20 14:08:33 瀏覽:592
360瀏覽器無法訪問網路 發布:2025-05-20 14:05:13 瀏覽:834
存儲伺服器地址錯誤 發布:2025-05-20 14:01:46 瀏覽:912