1. 程式人生 > >C# 屬性與欄位

C# 屬性與欄位

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        /* 主方法,函式的入口。
         * 從方法的命名來看,java 方法命名是首字母小寫,後面每個開頭字母大寫(小駝峰規則)
         * 而C#也類似,只不過是首字母大寫(大駝峰)。--就是喜歡和別人對著幹
         */
       static void Main(string[] args)
        {
            Student s = new Student("invoker","1010",20,"man");
            Console.WriteLine(s);
            s.Name = "sfwoegwoegfjodger";
            s.sex = "woman"; //沒有提供set訪問器就會報錯。
            Console.WriteLine(s);
            //僅為了防止控制檯閃退
            Console.ReadLine();
        }
       
    }
    class People 
    {
        private string name;  //定義欄位:在C#中欄位用來儲存屬性的資料。而屬性是對外發布資料。
        private int age;
        /*
         * 定義屬性:
         * public string sex{get;}沒有set,該屬性是不能夠被賦值的。
         * public string sex{set;}沒有get,該屬性是不能夠取值的。
         * public string sex{}類似 private string sex;
         * 那麼:
         * public string sex;          這是定義欄位,就不一樣了。沒有任何約束(除了修飾詞)。
         * public string sex{set;get}  這是定義屬性。它的訪問許可權全靠set,get訪問器。
         */

        //定義屬性,雖然是公有成員,當沒有set訪問器,外界不能修改,該屬性,只能訪問.同理沒get;不能訪問。
        //如果定義私有屬性,get;set;訪問器就沒有任何意義了。
        public string sex { get; set; } //有屬性,沒有相應的欄位C#會自動生成相應的欄位。

        /* 私有欄位,通過相應的屬性中的get,set訪問器來訪問。
         * 外部只需要取該公有屬性。相當於為name取一個別名
         * Name,為外部訪問。當然
         * get,set裡面可以寫相關的約束程式碼,限制通過Name
         * 來訪問或者修改name。
         * 與java中set,get方法相比。C#簡化了外部訪問私有成員固定的
         * 模式getX(),setX()方法。而是通過替代公有屬性來訪問私有欄位成員。
         * 另外,java屬性和欄位沒什麼區別。
         */
        public string Name 
        {
            get { return name; }
            set {
                if (value.Length < 12)
                    name = value;
                else Console.WriteLine("非法修改");
            }
        }
        //為age欄位提供相應的屬性,便於外界訪問
        public int Age {
            get { return age; }
            set { age = value; }
        }

        public People(string name,int age,string sex) 
        {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    }
    /*定義一個學生類繼承Ojbect類,當然不繼承Object會自動繼承該類,這點和java類似
     * 繼承使用":"
     */
    class Student:People
    {
        private string id;
        /* C#與java指代的父類不同,C#是base,而java是super.
         * 呼叫父類的構造器也不同,java是寫在子類構造器裡面,而C#是在
         * 子類構造器方法上面
         */
        public Student(string name,string id,int age,string sex):base(name,age,sex)
        {
            this.id = id;
        }
        /*重寫Object裡面的ToString方法
         */
        public override string ToString()
        {
            return "<" +Name + "," + id + "," +Age + ","+sex+">";
        }
    }
}

好久沒寫部落格了,本來一直學習java,而老師硬要我們自學C#。沒折就隨便學學。不過C#與java極為類似。學習來也不會那麼吃力。找到不同點就行了。個人之見,有什麼不對的地方,還請諒解!。

相關推薦

C# 屬性

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp

C#屬性

# C#屬性與欄位 國慶難得放鬆了一週,九月真的很大壓力。~~代價是~~回到學校之後一直還債,加上紅會那邊全體大會、R社的百團招新,學業和自學沒什麼進展,~~但是也擠時間學了很多東西。~~這周相對沒那麼忙了,受狒狒哥的啟發我也更新一下部落格吧。~~(說那麼多,只是想說我沒有摸魚)~~ ## 欄位

c# 中屬性

今天回頭學習c# 的基礎,看到屬性的定義,忽然明白一個簡單的道理:欄位定義為Private,不需要class 的外部進行訪問,那麼就可以搞個屬性對private 的欄位進行get,set, 還有一個理由就是這個private 的欄位有時是隻讀取的,不允許外部賦值寫入,那麼就只搞個get 的屬性OK了

Kotlin 全面學習之路 (八) -- 屬性

1、 宣告屬性 在 Kotlin 中 屬性分為 可變屬性 和 只讀屬性: var 可變 val 只讀 示例; class Mike { val name: String = "Mike" var age: Int = 25 }

Kotlin學習之類物件篇—屬性

屬性的宣告 Kotlin類中可以有屬性,屬性可以被宣告為可變屬性,用var關鍵字修飾;或者宣告為只讀屬性,用val修飾。 class Address { var name: String = ... var street: String

C# 帶後備屬性和不帶後備屬性

public class Test { public Test() { Date = "1"; } private string dt { get; } = "1"; public string Date {

[最新]織夢dedecms5.7資料庫結構詳細說明-附表名

織夢dedecms-v5.7資料表結構詳細說明-附表名與欄位名,新手入門學習必備。   1、dede_addonarticle:附加文章表  表名:dede_addonarticle(ENGINE=MyISAM/CHARSET=utf8) 說明

C#中模型取值的計算

定義一個資源模型,包含Shape、LEN_PIPE等屬性。需要我們在儲存資源至GIS資料圖層時,如已指定Shape,則LEN_PIPE自動計算(Shape是一條多段線,長度向下取整為LEN_PIPE的值),而當我們從GIS圖層中讀取資料時,如LEN_PIPE已有值,則取已有值,否則自動按Shap

jackson序列化 屬性 get 不對應

在jackson序列化物件時,由於其在原始碼中增加了一個可見性判斷,會預設只序列化public修飾的欄位和方法,造成一個可能存在的問題是你欄位明明是CId,但是自動生成的get方法是getCId的話,jackson會將欄位序列化成cid,造成一個反序列失敗的問題(2.0.2到最新2.9.6版本測試)

“全棧2019”Java第三十七章:類

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第三十七章:類與欄位 下一章 “全棧2019”Java第三十八章:類與方法 學習小組 加

“全棧2019”Java第四十六章:繼承

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第四十六章:繼承與欄位 下一章 “全棧2019”Java第四十七章:繼承與方法 學習小組

MySQL中使用表別名別名

MySQL 表別名(Alias) SQL 表別名 在 SQL 語句中,可以為表名稱及欄位(列)名稱指定別名(Alias),別名是 SQL 標準語法,幾乎所有的資料庫系統都支援。通過關鍵字 AS 來指定。 表別名語法: SELECT column FROM tab

C#常量和以及各種方法的語法總結

目錄 一、 常量和欄位.... 1 1、     常量.... 1 2、欄位.... 1 二、方法.... 2 1、例項構造器和類(引用型別).... 2 2、     例項構造器和結構(值型別).... 2 3、     型別構造器.... 3 4、  操作符過載方法.... 3 5、     轉換操作符方

oracle資料庫表右鍵屬性各個的含義

  Column Datatype NULL Description OWNER VARCHAR2(30) NOT NULL 屬主 TABL

註解開發mybatis的mapper屬性不對應問題@Results—resultMap

註解開發—mybatis的mapper屬性和欄位不對應問題@Results—resultMap Mybatis給我們提供了一種對映方式,如果屬性的命名是遵從駝峰命名法的,資料列名遵從下劃線命名。MyBatis支援使用註解來配置對映語句,不再需要在XML配置檔案

mysql更改表的編碼方式

建立表時使用show create table student檢視發現編碼預設為latin1 接下來使用alter table student default character set utf8;更改了資料表的編碼方式。 發現表的編碼已經改為utf

記憶體分配 堆和棧 XIP(片上執行)

1 記憶體分配與欄位       程式編譯時,編譯器將程式碼翻譯成彙編程式碼,然後彙編器將彙編程式碼翻譯成機器程式碼(二進位制),得到目標檔案,最後連結器將目標檔案連結成可執行檔案。而目標檔案和可執行檔案的格式一般是類似的,由一個個se

JPA之大資料對映延遲載入

1、修改Person.java中的程式碼 package cn.sunft.bean; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; imp

Django中ORM模型總結(二)[模型類的對應關係,模型類的屬性型別]

模型類的對應關係 多對多 建立模型類----->新聞型別類 class TypeInfo(models.Model): """建立新聞模型類""" tname = models.CharField(max_length=20) 建立模型類--

postgres資料庫獲取表的資訊的資訊

1、獲取postgres中定義表的名稱與註釋 select relname as TABLE_NAME ,col_description(c.oid, 0) as COMMENTS from pg_class c where  relkind = 'r' and relna