c#面向物件中的get和set的用法
面向物件程式設計的一個規則是:使使用者只需要指定物件能做什麼,而不需要去指定或者瞭解物件是如何完成該的。
屬性是物件內部的資料,使用者如果能夠直接訪問物件內部資料,顯然就違反了上述規則。(這也有點類似Windows系統對記憶體的保護,可以通過API來操作,但不推薦直接訪問記憶體,那樣就可能把記憶體搞亂了。)
通過get和set訪問器來訪問,就保持了這種規則,而且還提供了額外的功能,如對值進行檢查,實現只讀或只寫屬性等。
總的來說就是可以通過set get
來對類的屬性進行封裝,面向物件的程式是不可以直接用類自己定義的屬性的
剛剛學C#的時候,很多人都不明白屬性的訪問器有什麼用呢,我上網見了不少的評論,拉下來給大家看看
一般面向物件程式語言都要求成員變數不能直接暴露給外部訪問,如下: public class A { public int Age; //這是不好的,待會有程式設計師可能把-1賦給Age } 為了防止亂賦值,C#設計了一個屬性機制,要求把成員變數設為私有,在通過屬性來控制成員變數的讀寫,如下: public class B { private int age; //私有成員變數 public int Age //age的屬性 { get{ return age; } //讀取器 set{ //寫入器 if(value>0) age = value; //value是準備寫入的值 } } } 這樣Age就像保安一樣,擋在age的前面。訪問age的時候需要通過Age許可,如下: B b = new B(); b.Age = -1; //這是不行的,-1被帶入value,value<0,判斷不成立 b.Age = 10; //這是可行的
如果還有不懂的話可以留言,我儘量教會你,下面是我一個簡單是例子
//-------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
public class Myclass
{
private string id="";
private string name="";
public string ID
{
get
{
return id;
}
set
{
id =value;
}
}
public string Name
{
get
{
return name;
}
set
{
name =value;
}
}
}
class Program
{
static void Main(string[] args)
{
Myclass clazz = new Myclass ();
clazz.ID ="BH001";
clazz.Name="MR01";
Console.WriteLine(clazz.ID,clazz.Name);
Console.ReadLine();
}
}
}
相關推薦
c#面向物件中的get和set的用法
面向物件程式設計的一個規則是:使使用者只需要指定物件能做什麼,而不需要去指定或者瞭解物件是如何完成該的。 屬性是物件內部的資料,使用者如果能夠直接訪問物件內部資料,顯然就違反了上述規則。(這也有點類似Windows系統對記憶體的保護,可以通過API來操作,但不推薦直接訪問記憶體,那樣就可能把記
關於matlab中get和set的用法(轉)
通用函式get和set 所有物件都有屬性來定義它們的特徵,正是通過設定這些屬性來修正圖形顯示的方式。儘管許多屬性所有的物件都有,但與每一種物件型別(比如座標軸,線,曲面)相關的屬性列表都是獨一無二的。物件屬性可包括諸如物件的位置、顏色、型別、父物件、子物件及其它內容。每一個不同物件都有和它相關的屬性,可以改
flask 中get和post用法
get和post 1、get請求: 使用場景:如果只對伺服器獲取資料,並沒有對伺服器產生任何影響,那麼這時候使用get請求 傳參:get請求傳參是放在url中,並且是通過?的形式來指定key和value的 2、post請求: 使
C++面向物件程式設計——類和物件(個人整理)
物件: object 客觀世界中任何一個事物都可以看成一個物件,如自然物體(汽車,房子,班級...) 可以看到一個班級作為一個物件有兩個要素: 1、班級所屬系和專業,人數等靜態特徵(屬性); 2、班
關於面向物件程式設計中很多人用get()和set()方法,而不用public的一點總結
在很多程式中,都喜歡定義一個privata變數,然後為這個私有變數加上get(),set()方法。那為什麼不直接定義一個public變數呢?這樣做到底有什麼好處和意義呢?難道真的僅僅只是為了程式碼規範?別逗了,不管你信不信,反正我是不信!帶著這個問題我在網上尋找答案,真是眾
《隨筆四》——C#中的 “屬性和索引器中的 get 和 set 訪問器的訪問修飾符”
屬性和索引器中的 get 和 set 訪問器的訪問修飾符 ● 索引器和屬性自帶 get 和 set 訪問器, 在預設的情況下: 如果一個屬性有public 訪問級別, 那麼它的那個兩個訪問器
Python基礎筆記_Day10_Python面向物件、類和物件、__init__、__str__、訪問限制、set、get
Day10_Python面向物件、類和物件、init、str、訪問限制、set、get 10.01_Python語言基礎(面向物件思想)(理解) 10.02_Python語言基礎(類和物件)(掌握) 10.03_Python語言基礎(類的構成)(掌握) 10.04_Python語言基礎(
C#中的GET和SET訪問器
我們在學習C#語法的屬性時,都要首先和GET,SET訪問器打交道,從英文的字面意思上理解,GET應該就是獲得什麼什麼,而SET應該是設定什麼什麼,那我們看一下,官方是怎麼定義這對訪問器的:get是讀取屬性時進行的操作,set是設定屬性時進行的操作。定義一個屬性如果只有ge
C#中的get和set 方法
set()是給屬性賦值的,get()是取得屬性值的 被設定和存取的屬性一般是私有 主要是起到封裝的作用,不允許直接對屬性操作 set()和get()不一定同時存在,看程式需求 釋一:屬性的訪問器包含與獲取(讀取或計算)或設定(寫)屬性有關的可執行語句。 訪問器宣告可以
C#----Get和Set在屬性中的使用
Get和Set在屬性中的作用: 第一個作用:保證資料的安全性,對欄位進行了有效的保護。 第二個作用:起到監視作用 private int width=0; public int Width { get{return width;} set{width=va
C#中Get和Post請求的同步及異步方法
iter epo charset result string pty streambuf div httpget 在C#中發起Http請求一般使用HttpWebRequest這個類,下文將使用這個HttpWebRequest對象來對Get和Post的同步及異步請求進行封裝:
再談面向物件中的封裝、繼承和多型
封裝 封裝說的是把資料封裝起來,對外暴露一個可以訪問的介面,不能讓外界直接訪問內部的資料。 從上面的描述可以抽取出兩種型別:介面和類。 從現在比較火的微服務的觀點上來看,一個類就是一個服務,一個物件就是一個服務的例項,通過這個服務暴露的介面來訪問這個服務。從這個意義上來講,面向
面向物件中的final和static關鍵字特點總結
1 final的特點 1.1 final修飾類不可以被繼承,但是可以繼承其他類。 class Yy {} final class Fu extends Yy{} //可以繼承Yy類 class Zi extends Fu{} /
Mysql資料庫大量刪除操作及談面向物件中的封裝繼承和多型原理(圖)
Mysql資料庫大量刪除操作及談面向物件中的封裝繼承和多型原理(圖) 最近進行資料庫操作,遇到一個問題,就是大量刪除一個數據表中的資料後,由於設定了id是自增的,導致再插入時,預設生成的id會很大,這個時候想要再次插入新的資料,應該怎麼辦呢? 1.明確目前最後一個id的大小 select id fr
C#中Get和Post請求的同步及非同步方法
在C#中發起Http請求一般使用HttpWebRequest這個類,下文將使用這個HttpWebRequest物件來對Get和Post的同步及非同步請求進行封裝: 新建HttpRequestHelper類: public static class H
關於C++中vector和set使用sort方法進行排序
C++中vector和set都是非常方便的容器, sort方法是algorithm標頭檔案裡的一個標準函式,能進行高效的排序,預設是按元素從小到大排序 將sort方法用到vector和set中能實現多種符合自己需求的排序 首先sort方法可以對靜態的陣列進行排序
Python面向物件中super用法與MRO機制
1. 引言 最近在研究django rest_framework的原始碼,老是遇到super,搞得一團蒙,多番檢視各路大神部落格,總算明白了一點,今天做一點總結。 2. 為什麼要用super 1)讓程式碼維護更加簡單 Python是一門面向物件的語言,定義
C++中map和set的使用與區別
set set是一種關聯式容器,其特性如下: set以RBTree作為底層容器 所得元素的只有key沒有value,value就是key 不允許出現鍵值重複 所有的元素都會被自動排序 不能通過迭代器來改變set的值,因為set的值就是鍵 針對這五點來說,
C# get和set
在面向物件程式設計(OOP)中,是不允許外界直接對類的成員變數直接訪問的,既然不能訪問,那定義這些成員變數還有什麼意義呢?所以C#中就要用set和get方法來訪問私有成員變數,它們相當於外界訪問物件的一個通道,一個“介面”。先來看一段程式碼: class Employee
c#欄位,屬性get和set精解
在講解get和set訪問器之前,為了更方便理解,先講解一個例子(不想看例子的可以直接跳到文章正式部分,這裡照顧下新手,是不是很暖?哈哈) 今天做專案的時候,在建立房間介面有一個底分的選項,要求底分的範圍在1-20之間。這裡我另外建立了一個練習的專案,面板如下圖: