欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在C#中如何使用JSON

 更新時(shí)間:2024年09月24日 14:33:42   作者:王維志  
JSON(JavaScript?Object?Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,具有易讀、易解析的特點(diǎn),廣泛用于API數(shù)據(jù)交互、配置文件等,本文介紹在C#中如何使用JSON,感興趣的朋友跟隨小編一起看看吧

JSON簡(jiǎn)介

1. 什么是 JSON?

JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式。它的語(yǔ)法基于 JavaScript 對(duì)象表示法,簡(jiǎn)單、易讀,同時(shí)被許多編程語(yǔ)言支持。盡管它來(lái)源于 JavaScript,但它并不依賴(lài)于 JavaScript,許多語(yǔ)言(如 Python、Java、C#、PHP 等)都能夠解析和生成 JSON。

常見(jiàn)用途:

API 數(shù)據(jù)交互:在客戶端和服務(wù)器之間傳遞數(shù)據(jù)時(shí),JSON 是常用格式,特別是前后端交互時(shí).

配置文件:許多應(yīng)用程序使用 JSON 來(lái)保存配置文件(例如 .json 文件)。

數(shù)據(jù)持久化:在數(shù)據(jù)庫(kù)或文件系統(tǒng)中使用 JSON 來(lái)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。

2. JSON 的基本語(yǔ)法結(jié)構(gòu)

JSON 的數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單,主要包括以下兩種類(lèi)型:

對(duì)象(Object):由花括號(hào) {} 包圍的一組鍵值對(duì),鍵是字符串,值可以是任何合法的 JSON 數(shù)據(jù)類(lèi)型。

數(shù)組(Array):由方括號(hào) [] 包圍的一組值,值可以是任意 JSON 類(lèi)型。

示例:

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "courses": ["Math", "Science"],
  "address": {
    "city": "New York",
    "zipcode": "10001"
  }
}

JSON 的基本元素:

字符串:用雙引號(hào)包裹,如 "name": "John"

數(shù)字:可以是整數(shù)或浮點(diǎn)數(shù),如 "age": 30

布爾值:true 或 false

數(shù)組:一個(gè)有序的值列表,用方括號(hào) [] 包裹

對(duì)象:一個(gè)無(wú)序的鍵值對(duì)集合,用花括號(hào) {} 包裹

空值:null

你不難看出JSON 本質(zhì)上由三種主要元素構(gòu)成:

對(duì)象(Object):鍵值對(duì)的集合,類(lèi)似于字典。JSON 對(duì)象用 {} 表示,包含鍵值對(duì)(key-value pairs),鍵必須是字符串,值可以是任意合法的 JSON 元素(如數(shù)組、對(duì)象或基本值)。

數(shù)組(Array):有序的元素集合,類(lèi)似于列表或數(shù)組(不代表C#的數(shù)組,只是體現(xiàn)一個(gè)有序集合)。JSON 數(shù)組用 [] 表示,數(shù)組中的每個(gè)元素可以是任意合法的 JSON 元素(如對(duì)象、數(shù)組或基本值)。

基本值(Value):JSON 的最基礎(chǔ)元素,可以是字符串、數(shù)字、布爾值或 null。這部分?jǐn)?shù)據(jù)不能再包含其他子元素。

這很重要:因?yàn)槌浞址治鲞@三種元素自身以及他們之間的關(guān)系是JSON處理的關(guān)鍵.很多JSON庫(kù)也是考慮了這三種概念實(shí)現(xiàn)的.

3. JSON 的優(yōu)勢(shì)(作用)

JSON 之所以成為數(shù)據(jù)交換的首選格式,離不開(kāi)它的諸多優(yōu)勢(shì):

輕量級(jí):相比于 XML 等格式,JSON 占用的體積更小,結(jié)構(gòu)更為簡(jiǎn)潔。

可讀性好:人類(lèi)易讀,同時(shí)解析程序也易于編寫(xiě)。

支持?jǐn)?shù)據(jù)類(lèi)型豐富:可以直接表示對(duì)象、數(shù)組、字符串、數(shù)字、布爾值等常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。

廣泛支持:幾乎所有編程語(yǔ)言都提供了用于解析和生成 JSON 的庫(kù)或內(nèi)置函數(shù)。

標(biāo)準(zhǔn)化格式:JSON 的格式有明確的標(biāo)準(zhǔn),確保了跨語(yǔ)言、跨平臺(tái)的兼容性。

靈活性高:可以嵌套任意復(fù)雜的對(duì)象和數(shù)組,適合復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

4. JSON 的常見(jiàn)使用場(chǎng)景

API 通信

在現(xiàn)代 Web 開(kāi)發(fā)中,前后端的通信常常依賴(lài)于 JSON。客戶端發(fā)送 HTTP 請(qǐng)求時(shí),通常使用 JSON 格式來(lái)傳遞數(shù)據(jù),服務(wù)器也通過(guò) JSON 格式返回?cái)?shù)據(jù)。下面是一個(gè)簡(jiǎn)單的例子:

請(qǐng)求體(客戶端向服務(wù)器發(fā)送的數(shù)據(jù)):

{
  "username": "john_doe",
  "password": "123456"
}

響應(yīng)體(服務(wù)器返回的數(shù)據(jù)):

{
  "status": "success",
  "message": "Login successful",
  "token": "abcdef123456"
}

配置文件

JSON 格式經(jīng)常用于存儲(chǔ)配置數(shù)據(jù),因?yàn)樗子陂喿x和修改。例如,一個(gè)應(yīng)用程序的配置文件可能如下:

{
  "app_name": "MyApp",
  "version": "1.0.0",
  "settings": {
    "theme": "dark",
    "language": "en"
  }
}

本地?cái)?shù)據(jù)存儲(chǔ)

前端開(kāi)發(fā)中,JSON 常被用來(lái)在本地存儲(chǔ)數(shù)據(jù)(如瀏覽器的 localStorage 或 sessionStorage)。

數(shù)據(jù)序列化

當(dāng)將對(duì)象或數(shù)據(jù)結(jié)構(gòu)保存到文件或數(shù)據(jù)庫(kù)時(shí),通常需要將其序列化為字符串格式,JSON 就是常用的序列化格式之一。

5.JSON和C#類(lèi)型之間的映射關(guān)系

在 C# 中,JSON 的基本元素與相應(yīng)的數(shù)據(jù)類(lèi)型有直接的對(duì)應(yīng)關(guān)系。

1. 字符串

JSON:字符串用雙引號(hào)包裹,表示文本數(shù)據(jù)。

示例:"name": "John"

C# 對(duì)應(yīng)類(lèi)型:string

在 C# 中,JSON 的字符串類(lèi)型直接映射為 string 類(lèi)型。

示例:

string name = "John";

2. 數(shù)字

JSON:數(shù)字可以是整數(shù)或浮點(diǎn)數(shù),表示數(shù)值類(lèi)型的數(shù)據(jù)。

示例:"age": 30

C# 對(duì)應(yīng)類(lèi)型:int、float、double

在 C# 中,整數(shù)可以映射為 int,浮點(diǎn)數(shù)可以映射為 float 或 double,根據(jù)具體需要選擇類(lèi)型。

示例:

int age = 30;
float price = 29.99f;
double pi = 3.14159;

3. 布爾值

JSON:布爾值表示為 true 或 false。

示例:"isStudent": false

C# 對(duì)應(yīng)類(lèi)型:bool

在 C# 中,布爾值映射為 bool 類(lèi)型。

示例:

bool isStudent = false;

4. 數(shù)組

JSON:數(shù)組是一個(gè)有序的值列表,用方括號(hào) [] 包裹,數(shù)組中的每個(gè)元素可以是任意 JSON 類(lèi)型。

示例:"courses": ["Math", "Science"]

C# 對(duì)應(yīng)類(lèi)型:List<T> 或數(shù)組 T[]

在 C# 中,JSON 數(shù)組可以映射為 List<T>(泛型列表)或者普通數(shù)組 T[],其中 T 是數(shù)組中元素的類(lèi)型。

示例:

List<string> courses = new List<string> { "Math", "Science" };
// 或者
string[] coursesArray = { "Math", "Science" };

5. 對(duì)象

JSON:對(duì)象是一個(gè)無(wú)序的鍵值對(duì)集合,用花括號(hào) {} 包裹,每個(gè)鍵必須是字符串,值可以是任意 JSON 類(lèi)型。

示例:"address": { "city": "New York", "zipcode": "10001" }

C# 對(duì)應(yīng)類(lèi)型:自定義類(lèi)或 Dictionary<string, T>

在 C# 中,JSON 對(duì)象可以映射為自定義類(lèi),類(lèi)中的屬性對(duì)應(yīng) JSON 對(duì)象中的鍵值對(duì)。也可以使用 Dictionary<string, T> 來(lái)表示鍵值對(duì)集合,其中 T 表示值的類(lèi)型。

示例(使用自定義類(lèi)):

class Address
{
    public string City { get; set; }
    public string Zipcode { get; set; }
}
Address address = new Address { City = "New York", Zipcode = "10001" };

示例(使用字典):

Dictionary<string, string> address = new Dictionary<string, string>
{
    { "city", "New York" },
    { "zipcode", "10001" }
};

6. 空值

JSON:空值表示為 null。

示例:"middleName": null

C# 對(duì)應(yīng)類(lèi)型:null

在 C# 中,JSON 的 null 對(duì)應(yīng) C# 中的 null 值。它可以應(yīng)用于任何可空類(lèi)型(如引用類(lèi)型和 Nullable<T>)。

在 C# 中,JSON 的基本元素可以映射為相應(yīng)的 C# 數(shù)據(jù)類(lèi)型。這種映射使得我們可以輕松處理 JSON 數(shù)據(jù),并與 C# 中的對(duì)象和類(lèi)型進(jìn)行交互。

6. 如何處理 JSON 數(shù)據(jù)

什么是序列化/反序列化

我們首先要先鋪墊一下什么是序列化/反序列化

序列化反序列化是將對(duì)象和數(shù)據(jù)在不同格式之間轉(zhuǎn)換的過(guò)程,主要用于數(shù)據(jù)持久化、網(wǎng)絡(luò)傳輸?shù)葓?chǎng)景.在C#中我們的數(shù)據(jù)一般以對(duì)象形式存儲(chǔ)在內(nèi)存中,但是內(nèi)存數(shù)據(jù)不能持久保存,你關(guān)機(jī)后或者程序關(guān)閉時(shí)數(shù)據(jù)就沒(méi)了,那我們?cè)趺窗褦?shù)據(jù)保存下來(lái)呢?

答案就是序列化,我們常用的就是將對(duì)象序列化為JSON(當(dāng)然不止JSON,只是JSON更常用),這樣我們?cè)賹⑵?這個(gè)說(shuō)的更清晰點(diǎn)就是字符串,JSON絕大多數(shù)情況是以字符串形式出現(xiàn)的,只不過(guò)你可以理解為是一種有一定格式或一定規(guī)則的字符串)保存在磁盤(pán)或者通過(guò)網(wǎng)絡(luò)傳遞給其他人都很方便.

理所當(dāng)然的JSON轉(zhuǎn)換為內(nèi)存中的對(duì)象就是反序列化,常見(jiàn)的情景就是讀取JSON格式的配置文件,先從磁盤(pán)讀取出來(lái)再反序列化為對(duì)象,我們就可以十分方便的操作這個(gè)對(duì)象了.

怎么做?

大多數(shù)編程語(yǔ)言都提供了用于解析(反序列化)和生成(序列化)JSON 數(shù)據(jù)的庫(kù)或內(nèi)置函數(shù)。

C# 提供了 System.Text.Json 和 Newtonsoft.Json(第三方庫(kù))來(lái)處理 JSON。

我建議使用Newtonsoft.Json(NuGet Gallery | Newtonsoft.Json 13.0.3),這可以說(shuō)是C#環(huán)境里最流行,最強(qiáng)大的一個(gè)庫(kù),經(jīng)過(guò)二十年左右的發(fā)展支持絕大多數(shù).net環(huán)境,目前在所有nuget包中下載量中排名第一.

常見(jiàn)用法

1. 使用 JsonConvert.SerializeObject 方法可以將 C# 對(duì)象轉(zhuǎn)換為 JSON 字符串。

using Newtonsoft.Json;
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public bool IsStudent { get; set; }
}
Person person = new Person { Name = "John", Age = 30, IsStudent = false };
// 序列化為 JSON
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);

得到(這就是一個(gè)字符串,包括首尾的花括號(hào)在內(nèi),前面提到{}代表一個(gè)對(duì)象,里面是無(wú)序的鍵值對(duì))

{"Name":"John","Age":30,"IsStudent":false}

2. 使用 JsonConvert.DeserializeObject<T> 可以將 JSON 字符串反序列化為 C# 對(duì)象。

//這里的\是轉(zhuǎn)義符,不是字符串自身的內(nèi)容
string json = "{\"Name\":\"John\",\"Age\":30,\"IsStudent\":false}";
// 反序列化為對(duì)象
Person person = JsonConvert.DeserializeObject<Person>(json);
Console.WriteLine(person.Name);  // 輸出 "John"
Console.WriteLine(person.Age);   // 輸出 30

3. 將 JSON 數(shù)組轉(zhuǎn)換為 C# 集合(如 List<T>)。

string jsonArray = "[{\"Name\":\"John\",\"Age\":30},{\"Name\":\"Jane\",\"Age\":25}]";
// 反序列化為 List<Person>
List<Person> people = JsonConvert.DeserializeObject<List<Person>>(jsonArray);
foreach (var person in people)
{
    Console.WriteLine($"{person.Name}, {person.Age}");
}

John, 30
Jane, 25

4. 處理嵌套對(duì)象

如果 JSON 中包含嵌套對(duì)象,Newtonsoft.Json 可以自動(dòng)反序列化嵌套結(jié)構(gòu)。

public class Address
{
    public string City { get; set; }
    public string Zipcode { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}
string nestedJson = "{\"Name\":\"John\",\"Address\":{\"City\":\"New York\",\"Zipcode\":\"10001\"}}";
// 反序列化嵌套的 JSON
Person person = JsonConvert.DeserializeObject<Person>(nestedJson);
Console.WriteLine($"{person.Name} lives in {person.Address.City}, {person.Address.Zipcode}");

5.JToken,JObject,JArray,JValue

上面提到JSON的基本組成元素:對(duì)象,數(shù)組,基本值,這對(duì)應(yīng)看newtonjson提供的JObject,JArray,JValue三種類(lèi)型,哪還有一個(gè)JToken,這個(gè)JToken是三種類(lèi)型抽象類(lèi)型,后三者繼承自前者.

為什么提到這些類(lèi)呢?因?yàn)楦`活!

你注意上面例子,我們處理一個(gè)JSON需要先聲明一個(gè)類(lèi)型,有的時(shí)候我們聲明了這個(gè)類(lèi)型可能極少使用,那么這個(gè)時(shí)候我們聲明一個(gè)類(lèi)型似乎就有些沒(méi)必要了.

或者這個(gè)JSON數(shù)據(jù)的結(jié)構(gòu)不是固定的,或是動(dòng)態(tài)的的情況下.所以我們使用上面的類(lèi)型.

string jsonString = "{\"name\": \"Alice\", \"age\": 25}";
// 使用 JObject 解析
JObject obj = JObject.Parse(jsonString);
// 動(dòng)態(tài)訪問(wèn)字段
string name = (string)obj["name"];
int age = (int)obj["age"];
Console.WriteLine($"Name: {name}, Age: {age}");

請(qǐng)看JSON代表一個(gè)對(duì)象,如果不常用這個(gè)類(lèi)型,那么我們直接認(rèn)為它是一個(gè)JObject類(lèi)型.這樣我們轉(zhuǎn)為JObject類(lèi)型,再使用索引器直接拿到我們需要的數(shù)據(jù).

上述我們知道這是一個(gè)對(duì)象,所以我們使用JObject類(lèi)型,那么我們連這個(gè)也不知道呢?無(wú)妨!掏出我們的JToken類(lèi)型,這個(gè)類(lèi)型是三個(gè)子類(lèi)的父類(lèi),包含所有子類(lèi)的行為,能夠代表所有的JSON概念,無(wú)論它是對(duì)象,數(shù)組,還是基本值.

        
using Newtonsoft.Json.Linq;
string jsonString = @"{
    'person': {
        'name': 'Alice',
        'age': 25,
        'address': {
            'city': 'Wonderland',
            'zipcode': '12345'
        },
        'phones': ['123-456-7890', '987-654-3210']
    }
}";
// 解析為 JToken
JToken token = JToken.Parse(jsonString);
// 動(dòng)態(tài)訪問(wèn)嵌套字段
string name = (string)token["person"]["name"];
string city = (string)token["person"]["address"]["city"];
string phone = (string)token["person"]["phones"][0];
Console.WriteLine($"Name: {name}, City: {city}, First Phone: {phone}");
using Newtonsoft.Json.Linq;
string jsonString = @"{
    'name': 'Alice',
    'age': 25,
    'address': {
        'city': 'Wonderland',
        'zipcode': '12345'
    },
    'hobbies': ['reading', 'chess', 'running']
}";
// 使用 JToken 解析
JToken token = JToken.Parse(jsonString);
// 動(dòng)態(tài)訪問(wèn)對(duì)象中的字段
string name = (string)token["name"];
int age = (int)token["age"];
// 動(dòng)態(tài)訪問(wèn)嵌套對(duì)象
string city = (string)token["address"]["city"];
string zipcode = (string)token["address"]["zipcode"];
// 動(dòng)態(tài)訪問(wèn)數(shù)組中的元素
string firstHobby = (string)token["hobbies"][0];
string secondHobby = (string)token["hobbies"][1];
// 輸出結(jié)果
Console.WriteLine($"Name: {name}, Age: {age}");
Console.WriteLine($"City: {city}, Zipcode: {zipcode}");
Console.WriteLine($"First Hobby: {firstHobby}, Second Hobby: {secondHobby}");

類(lèi)型轉(zhuǎn)換(對(duì)于JToken或它的子類(lèi))

Newtonsoft.Json 不僅支持通過(guò)類(lèi)型強(qiáng)制轉(zhuǎn)換訪問(wèn) JSON 數(shù)據(jù),還提供了更加便捷的方法來(lái)進(jìn)行類(lèi)型轉(zhuǎn)換。這些方法能夠避免類(lèi)型強(qiáng)制轉(zhuǎn)換時(shí)潛在的異常風(fēng)險(xiǎn),并提供更清晰的代碼表達(dá)。

Newtonsoft.Json 提供了以下常用的類(lèi)型轉(zhuǎn)換方法

1.Value<T>() 方法(適用于基本類(lèi)型)

Value<T>() 是 JToken 提供的一個(gè)泛型方法,能夠安全地將 JToken 的值轉(zhuǎn)換為指定的類(lèi)型。如果類(lèi)型轉(zhuǎn)換失敗,它不會(huì)拋出異常,而是返回類(lèi)型的默認(rèn)值。

適用于想要避免顯式的類(lèi)型強(qiáng)制轉(zhuǎn)換,并且希望代碼更簡(jiǎn)潔、安全的場(chǎng)景。

JToken token = JToken.Parse(@"{ 'name': 'Alice', 'age': 25 }");
string name = token["name"].Value<string>(); // 安全的類(lèi)型轉(zhuǎn)換
int age = token["age"].Value<int>(); // 轉(zhuǎn)換為 int
Console.WriteLine($"Name: {name}, Age: {age}");

使用 Value<T>() 進(jìn)行轉(zhuǎn)換時(shí),如果值不存在或者轉(zhuǎn)換失敗,它會(huì)返回類(lèi)型的默認(rèn)值(如 string 會(huì)返回 null,int 會(huì)返回 0),不會(huì)像類(lèi)型強(qiáng)制轉(zhuǎn)換那樣拋出異常。

2.ToObject<T>() 方法

ToObject<T>() 是另一個(gè)常用的方法,允許將 JToken 轉(zhuǎn)換為一個(gè)具體的對(duì)象或類(lèi)型。它適用于你希望將 JSON 數(shù)據(jù)反序列化為 C# 的具體類(lèi)型(如類(lèi)或結(jié)構(gòu)體)的場(chǎng)景。

ToObject<T>() 方法通過(guò)反序列化來(lái)進(jìn)行轉(zhuǎn)換,因此適合用于復(fù)雜的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換。

// 定義一個(gè)類(lèi)與 JSON 數(shù)據(jù)對(duì)應(yīng)
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
JToken token = JToken.Parse(@"{ 'name': 'Alice', 'age': 25 }");
// 將 JToken 反序列化為具體的 Person 對(duì)象
Person person = token.ToObject<Person>();
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

適合處理復(fù)雜的 JSON 數(shù)據(jù)結(jié)構(gòu),能夠?qū)⒄麄€(gè) JSON 結(jié)構(gòu)直接轉(zhuǎn)換為一個(gè) C# 對(duì)象。

它的靈活性使得你可以輕松地從 JSON 數(shù)據(jù)中創(chuàng)建 C# 類(lèi)對(duì)象,而不用手動(dòng)提取每一個(gè)字段。

3.TryGetValue<T>(out T result) 方法

這是一個(gè)較為安全的訪問(wèn)方式,TryGetValue 嘗試從 JToken 中獲取指定類(lèi)型的值,并通過(guò)返回布爾值來(lái)指示是否成功獲取。

它適合在不確定 JSON 數(shù)據(jù)結(jié)構(gòu)或類(lèi)型時(shí),安全地進(jìn)行轉(zhuǎn)換操作,避免拋出異常。

JToken token = JToken.Parse(@"{ 'name': 'Alice', 'age': 'not an integer' }");
// 嘗試安全獲取值
int age;
bool success = token["age"].TryGetValue<int>(out age);
if (success)
{
Console.WriteLine($"Age: {age}");
}
else
{
Console.WriteLine("Failed to get a valid integer for age.");
}

安全的類(lèi)型轉(zhuǎn)換方式,適合在 JSON 數(shù)據(jù)不可靠或結(jié)構(gòu)復(fù)雜時(shí)使用。

它通過(guò) out 參數(shù)來(lái)返回結(jié)果,能夠避免異常。

強(qiáng)制類(lèi)型轉(zhuǎn)換 vs 提供的方法

強(qiáng)制類(lèi)型轉(zhuǎn)換(Explicit Casting)

允許直接進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,比如 (string)token["name"] 或 (int)token["age"]。這種方式比較簡(jiǎn)潔,但是如果類(lèi)型不匹配或值不存在,會(huì)拋出異常。

總結(jié)

Value<T>() 方法:提供了安全的類(lèi)型轉(zhuǎn)換方式,不會(huì)拋出異常,適合處理簡(jiǎn)單的數(shù)據(jù)訪問(wèn)場(chǎng)景,代碼簡(jiǎn)潔。

ToObject<T>() 方法:適合將 JSON 直接轉(zhuǎn)換為 C# 對(duì)象,特別是對(duì)于復(fù)雜的 JSON 結(jié)構(gòu),能夠減少手動(dòng)提取每個(gè)字段的工作量。

TryGetValue<T>() 方法:提供一種安全的方式來(lái)獲取 JSON 數(shù)據(jù)中的值,適合在不確定數(shù)據(jù)結(jié)構(gòu)或類(lèi)型的情況下使用,防止異常的發(fā)生。

到此這篇關(guān)于在C#中使用JSON的文章就介紹到這了,更多相關(guān)C#使用JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#無(wú)損高質(zhì)量壓縮圖片實(shí)現(xiàn)代碼

    C#無(wú)損高質(zhì)量壓縮圖片實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C#無(wú)損高質(zhì)量壓縮圖片的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#通過(guò)XML節(jié)點(diǎn)屬性/屬性值讀取寫(xiě)入XML操作代碼實(shí)例

    C#通過(guò)XML節(jié)點(diǎn)屬性/屬性值讀取寫(xiě)入XML操作代碼實(shí)例

    本文主要介紹C#通過(guò)XML節(jié)點(diǎn)屬性、屬性值對(duì)XML的讀取,寫(xiě)入操作,大家參考使用吧
    2013-11-11
  • C#中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換介紹

    C#中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換介紹

    大家好,本篇文章主要講的是C#中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C#多線程系列之讀寫(xiě)鎖

    C#多線程系列之讀寫(xiě)鎖

    本文詳細(xì)講解了C#多線程的讀寫(xiě)鎖,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C#實(shí)現(xiàn)仿QQ抽屜式窗體的設(shè)計(jì)方法

    C#實(shí)現(xiàn)仿QQ抽屜式窗體的設(shè)計(jì)方法

    QQ軟件對(duì)于絕大多數(shù)的人來(lái)說(shuō)再熟悉不過(guò)了,它以使用方便、界面美觀及功能完善而著稱(chēng),本文給大家介紹了C#實(shí)現(xiàn)仿QQ抽屜式窗體的設(shè)計(jì)方法,主要通過(guò)使用API函數(shù)WindowFromPoint和GetParent實(shí)現(xiàn)仿QQ的抽屜式窗體,需要的朋友可以參考下
    2024-04-04
  • C#事件訂閱發(fā)布實(shí)現(xiàn)原理詳解

    C#事件訂閱發(fā)布實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了C#事件訂閱發(fā)布實(shí)現(xiàn)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • C# 開(kāi)發(fā)圓角控件(窗體)的具體實(shí)現(xiàn)

    C# 開(kāi)發(fā)圓角控件(窗體)的具體實(shí)現(xiàn)

    這篇文章主要介紹了C# 開(kāi)發(fā)圓角控件的具體實(shí)現(xiàn),需要的朋友可以參考下
    2014-02-02
  • VSCode配置C#運(yùn)行環(huán)境的完整步驟

    VSCode配置C#運(yùn)行環(huán)境的完整步驟

    這篇文章主要給大家介紹了關(guān)于VSCode配置C#運(yùn)行環(huán)境的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C#中的虛函數(shù)virtual

    C#中的虛函數(shù)virtual

    這篇文章介紹了C#中的虛函數(shù)virtual,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論