国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記錄C#知識(shí)點(diǎn)(二)21-40

這篇具有很好參考價(jià)值的文章主要介紹了記錄C#知識(shí)點(diǎn)(二)21-40。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

21.性能優(yōu)化

22.動(dòng)態(tài)dynamic使用

23.中文亂碼

24.啟動(dòng)項(xiàng)目之前,執(zhí)行文件

25.深拷貝-反射實(shí)現(xiàn)

26.丟棄運(yùn)算符 _

27.winform程序使用管理員運(yùn)行

28.wpf程序使用管理員運(yùn)行

29.Windows7上運(yùn)行.net6程序報(bào)錯(cuò)

30.字符串轉(zhuǎn)化字節(jié)數(shù)組,字節(jié)數(shù)組換成字符串

31.共享內(nèi)存

32.Lazy用法?

33.性能優(yōu)化Freezable

34.DataTable中Select的問(wèn)題

35.使用Dumpify可視化數(shù)據(jù)結(jié)構(gòu)

36.winform和wpf版本自動(dòng)生成控制

37.C#遞歸,尋找子節(jié)點(diǎn)


21.性能優(yōu)化

1.檢查空字符串:使用string.Empty
2.更改類(lèi)型轉(zhuǎn)換:使用as
3.字符串比較法:Equals("abc")
4.for循環(huán):使用--i比++i效率高
5.繼承,能少用就少用,代碼簡(jiǎn)潔了,但是效率低

22.動(dòng)態(tài)dynamic使用

先定義

     public class DynamicInputParams : DynamicObject
        {
            Dictionary<string, object> property = new Dictionary<string, object>();
            public override bool TryGetMember(GetMemberBinder binder, out object result)
            {
                string name = binder.Name;
                return property.TryGetValue(name, out result);
            }
      public override bool TrySetMember(SetMemberBinder binder, object value)
            {
                property[binder.Name] = value;
                return true;
            }
        }

使用

dynamic P = new DynamicInputParams();
            P.Name = "張三";
            P.Age = 22;
            P.Sex = "女";
            P.a = "a";
            Console.WriteLine(P.Name);
            //也可以添加到List集合
            List<dynamic> List = new List<dynamic>();
            List.Add(P);
            foreach (var item in List)
            {
                Console.WriteLine(item.Name);
            }

或者

   dynamic retObject;
   retObject = new { retcode = "0", retmsg = "成功", data = 1 };

23.中文亂碼

AppContext.SetSwitch("Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering", false);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
string[] strAll = await System.IO.File.ReadAllLinesAsync(filePath, Encoding.GetEncoding("gbk"));

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

24.啟動(dòng)項(xiàng)目之前,執(zhí)行文件

1.建立1.bat,demo是要關(guān)閉的進(jìn)程

taskkill /IM demo.exe /F

2.生成前事件命令行,注意目錄的路徑

powershell.exe -Command "Start-Process '$(SolutionDir)\1.bat' -Verb RunAs"

25.深拷貝-反射實(shí)現(xiàn)

還可以使用別的方式實(shí)現(xiàn)

        // 利用反射實(shí)現(xiàn)深拷貝
        #region MyRegion
        public static T DeepCopyWithReflection<T>(T obj)
        {
            Type type = obj.GetType();

            // 如果是字符串或值類(lèi)型則直接返回
            if (obj is string || type.IsValueType) return obj;
            // 如果是數(shù)組
            if (type.IsArray)
            {
                Type elementType = Type.GetType(type.FullName.Replace("[]", string.Empty));
                var array = obj as Array;
                Array copied = Array.CreateInstance(elementType, array.Length);
                for (int i = 0; i < array.Length; i++)
                {
                    copied.SetValue(DeepCopyWithReflection(array.GetValue(i)), i);
                }
                return (T)Convert.ChangeType(copied, obj.GetType());
            }

            object retval = Activator.CreateInstance(obj.GetType());

            PropertyInfo[] properties = obj.GetType().GetProperties(
                BindingFlags.Public | BindingFlags.NonPublic
                | BindingFlags.Instance | BindingFlags.Static);
            foreach (var property in properties)
            {
                var propertyValue = property.GetValue(obj, null);
                if (propertyValue == null)
                    continue;
                property.SetValue(retval, DeepCopyWithReflection(propertyValue), null);
            }

            return (T)retval;
        }
        #endregion

26.丟棄運(yùn)算符 _

使用_,編譯器不會(huì)出現(xiàn)提示警告了

        _ = Task.Run(() =>
            {

            });

27.winform程序使用管理員運(yùn)行

1.首先建立一個(gè)winform程序

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

2.增加app.manifest文件

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

3.修改代碼

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

4. 重新生成,查看生成目錄

會(huì)看到一個(gè)帶有盾牌的exe,就是已經(jīng)增加了管理員權(quán)限的程序

?記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

并且啟動(dòng)的時(shí)候,還會(huì)要求使用管理員運(yùn)行vs軟件

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

?注意:當(dāng)計(jì)算機(jī)登錄用戶已經(jīng)是管理員的話,那么exe就不會(huì)出現(xiàn)盾牌。即使把生成帶有盾牌的exe,復(fù)制過(guò)去,也不會(huì)帶有盾牌。

28.wpf程序使用管理員運(yùn)行

和winform差不多,只是項(xiàng)目的結(jié)構(gòu)不一樣

1.使用.net6創(chuàng)建一個(gè)wpf程序

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

2.?增加app.manifest文件

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

3.修改代碼

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

4. 重新生成,查看生成目錄

會(huì)看到一個(gè)帶有盾牌的exe,就是已經(jīng)增加了管理員權(quán)限的程序

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

29.Windows7上運(yùn)行.net6程序報(bào)錯(cuò)

報(bào)錯(cuò)KERNELBASE.dll問(wèn)題

此問(wèn)題是Windows7缺少了系統(tǒng)更新的文件,使用騰訊電腦管家,進(jìn)行更新即可,或者其他系統(tǒng)更新軟件。

30.字符串轉(zhuǎn)化字節(jié)數(shù)組,字節(jié)數(shù)組換成字符串

    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
        Encoding FromEcoding = Encoding.GetEncoding("UTF-8");
        Encoding ToEcoding = Encoding.GetEncoding("gb2312");
        byte[] FromBytes = FromEcoding.GetBytes("你好");
        byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, FromBytes);

        Encoding FromEcoding1 = Encoding.GetEncoding("gb2312");
        Encoding ToEcoding1 = Encoding.GetEncoding("UTF-8");
        byte[] Tobytes1 = Encoding.Convert(FromEcoding, ToEcoding, Tobytes);
        string s = ToEcoding.GetString(Tobytes);

31.共享內(nèi)存

MemoryMappedFile,進(jìn)程之前共享一個(gè)文件。

            string fileName = @"D:\1\1.txt";

            using (var mmFile = MemoryMappedFile.CreateFromFile(fileName, FileMode.OpenOrCreate, "fileHandle", 1024 * 1024))
            {
                string valueToWrite = "123456789";
                var myAccessor = mmFile.CreateViewAccessor();
                myAccessor.WriteArray<byte>(0, Encoding.ASCII.GetBytes(valueToWrite), 0, valueToWrite.Length);

                var readout = new byte[valueToWrite.Length];
                myAccessor.ReadArray<byte>(0, readout, 0, readout.Length);
                var finalValue = Encoding.ASCII.GetString(readout);
                MessageBox.Show(finalValue);
            }

32.Lazy用法?

Lazy是一種延遲加載技術(shù),就是比較懶,只有在需要的時(shí)候,才會(huì)去執(zhí)行第一次,但是只要執(zhí)行第一次以后,就不需要再次執(zhí)行了,提高了性能。

        // 創(chuàng)建一個(gè)Lazy實(shí)例,傳入一個(gè)委托,該委托將在第一次訪問(wèn)時(shí)執(zhí)行      //順序2,只調(diào)用一次,以后不要調(diào)用了
        Lazy<int> lazy = new Lazy<int>(() =>
        {
            Console.WriteLine("計(jì)算結(jié)果...");
            return 42; // 模擬耗時(shí)操作
        });
        private void button_Click(object sender, RoutedEventArgs e)
        {
            // 訪問(wèn)Lazy實(shí)例的值,這將觸發(fā)委托的執(zhí)行
            Console.WriteLine("第一次訪問(wèn): " + lazy.Value);      //順序1
            // 再次訪問(wèn)Lazy實(shí)例的值,這次將直接返回之前計(jì)算的結(jié)果,而不再執(zhí)行委托      //順序3
            Console.WriteLine("第二次訪問(wèn): " + lazy.Value);
        }

33.性能優(yōu)化Freezable

類(lèi)中繼承Freezable,可以讓類(lèi)進(jìn)行凍結(jié),從而提高性能,凍結(jié)后,不可以修改類(lèi)的屬性值,只能讀取。(非常底層的優(yōu)化,有些作用,但是意義不是很大)

34.DataTable中Select的問(wèn)題

當(dāng)使用Select選擇字段的值的時(shí)候,如果數(shù)據(jù)沒(méi)有更新,會(huì)出現(xiàn)少一條數(shù)據(jù)的情況。

比如,isCheck=‘1’,明明選擇了4條,但是在使用Select的時(shí)候,只有3條數(shù)據(jù)

此時(shí)就要在更改數(shù)據(jù)的地方,加上如下代碼。

 dt.AcceptChanges(); 

35.使用Dumpify可視化數(shù)據(jù)結(jié)構(gòu)

1.安裝

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

2.代碼使用

  var a = new
            {
                ID = "1",
                Name = "故里2130",
                Description = "故里2130"
            };
            a.Dump();

3.效果

多層數(shù)據(jù)嵌套也是可以的,幫助我們可視化復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

36.winform和wpf版本自動(dòng)生成控制

可在.csproj文件中輸入下面的代碼

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
    <Platforms>AnyCPU;x64</Platforms>
    <Version>5.1.$([System.DateTime]::UtcNow.ToString("yy")).$([System.DateTime]::UtcNow.ToString("MM"))</Version>
    <FileVersion>6.1.$([System.DateTime]::Now.ToString("yy")).$([System.DateTime]::Now.ToString("MM"))</FileVersion>
  </PropertyGroup>
</Project>

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言?可以換成net4.8版本

效果?

記錄C#知識(shí)點(diǎn)(二)21-40,記錄(持續(xù)更新),c#,windows,開(kāi)發(fā)語(yǔ)言

如果后綴出現(xiàn)字母的情況下,增加

<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>

37.C#遞歸,尋找子節(jié)點(diǎn)

using System;

public class Node
{
    public int Value { get; set; }
    public Node Parent { get; set; }
    public List<Node> Children { get; set; }

    public Node(int value)
    {
        Value = value;
        Children = new List<Node>();
    }
}

public class Program
{
    public static void Main()
    {
        // 創(chuàng)建父子嵌套類(lèi)的實(shí)例
        Node root = new Node(1);
        Node child1 = new Node(2);
        Node child2 = new Node(3);
        Node child11 = new Node(11);
        Node child12 = new Node(12);
        Node child13 = new Node(13);
        Node child21 = new Node(21);
        Node child22 = new Node(22);
        Node child23 = new Node(23);

        root.Children.Add(child1);
        child1.Children.Add(child11);
        child1.Children.Add(child12);
        child1.Children.Add(child13);
        root.Children.Add(child2);
        child2.Children.Add(child21);
        child2.Children.Add(child22);
        child2.Children.Add(child23);

        child1.Parent = root;
        child2.Parent = root;

        // 使用遞歸搜索給定值
        int targetValue = 22;
        Node result = FindValueRecursively(root, targetValue);

        if (result != null)
        {
            Console.WriteLine("找到了值為 " + targetValue + " 的節(jié)點(diǎn)");
        }
        else
        {
            Console.WriteLine("未找到值為 " + targetValue + " 的節(jié)點(diǎn)");
        }
    }

    public static Node FindValueRecursively(Node currentNode, int targetValue)
    {
        if (currentNode.Value == targetValue)
        {
            return currentNode;
        }

        foreach (Node child in currentNode.Children)
        {
            Node foundNode = FindValueRecursively(child, targetValue);
            if (foundNode != null)
            {
                return foundNode;
            }
        }

        return null; // 沒(méi)有找到目標(biāo)值
    }
}

來(lái)源:記錄C#知識(shí)點(diǎn)(二)21-40_故里2130的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-571784.html

到了這里,關(guān)于記錄C#知識(shí)點(diǎn)(二)21-40的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • pyqt5控件自適應(yīng)窗口知識(shí)點(diǎn)匯總(超詳細(xì)講解,持續(xù)更新中…)

    pyqt5控件自適應(yīng)窗口知識(shí)點(diǎn)匯總(超詳細(xì)講解,持續(xù)更新中…)

    本文涉及:Windows操作系統(tǒng),Python,PyQt5,Qt Designer,PyCharm 目錄 一、自適應(yīng)原理? 二、基礎(chǔ)布局示例 三、高級(jí)布局示例:布局嵌套布局 四、其它特殊控件自適應(yīng)補(bǔ)充 1.?tableWidget ?2. 未完待續(xù)… 五、結(jié)語(yǔ) ? ? ? ? 自適應(yīng)其實(shí)很簡(jiǎn)單,只要搞懂原理,你就能隨心所欲地去布置你

    2024年02月02日
    瀏覽(28)
  • 持續(xù)不斷更新中... 自己整理的一些前端知識(shí)點(diǎn)以及前端面試題,包括vue2,vue3,js,ts,css,微信小程序等

    答: 在普通的前端項(xiàng)目工程中,在script標(biāo)簽中增加setup即可使用api 使用setup()鉤子函數(shù) 答: 不要在計(jì)算屬性中進(jìn)行異步請(qǐng)求或者更改DOM 不要直接修改computed的值 區(qū)別: 計(jì)算屬性值基于其響應(yīng)式依賴被緩存,意思就是只要他之前的依賴不發(fā)生變化,那么調(diào)用他只會(huì)返回之前緩

    2024年02月11日
    瀏覽(58)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全40

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全40

    目錄 alien_invasion.py game_functions.py 14.3.3 在外星人被消滅時(shí)更新得分 settings.py game_functions.py game_functions.py alien_invasion.py 14.3.4 將消滅的每個(gè)外星人的點(diǎn)數(shù)都計(jì)入得分 game_functions.py 14.3.5 提高點(diǎn)數(shù) settings.py settings.py 注意 14.3.6 將得分圓整 scoreboard.py 注意 14.3.7 最高得分 game_stats.py s

    2024年02月03日
    瀏覽(15)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全21

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全21

    在Python 2.7中,繼承語(yǔ)法稍有不同,ElectricCar類(lèi)的定義類(lèi)似于下面這樣: 函數(shù)super()需要兩個(gè)實(shí)參:子類(lèi)名和對(duì)象self。為幫助Python將父類(lèi)和子類(lèi)關(guān)聯(lián)起來(lái),這些 實(shí)參必不可少。另外,在Python 2.7中使用繼承時(shí),務(wù)必在定義父類(lèi)時(shí)在括號(hào)內(nèi)指定object。 9.3.3 給子類(lèi)定義屬性和方法

    2024年01月16日
    瀏覽(20)
  • ad+硬件每日學(xué)習(xí)十個(gè)知識(shí)點(diǎn)(10)23.7.21

    ad+硬件每日學(xué)習(xí)十個(gè)知識(shí)點(diǎn)(10)23.7.21

    doc:放文檔 par:quartus Ⅱ的工程文件 rtl:設(shè)計(jì)輸入文件,也就是verilog代碼 sim:仿真文件 答:在file里選擇新建工程向?qū)?內(nèi)核電壓為1.2V,邏輯單元10320,用戶可用引腳數(shù)等信息。 這是第三方的EDA工具,不使用直接next。 結(jié)束 答:可以雙擊這里進(jìn)行修改。 答:在file里選擇new,

    2024年02月15日
    瀏覽(32)
  • 飛天使-k8s知識(shí)點(diǎn)21-kubernetes實(shí)操6-daemonset

    飛天使-k8s知識(shí)點(diǎn)21-kubernetes實(shí)操6-daemonset

    daemonset service endpoint pod 之間的關(guān)系 service 基于Service訪問(wèn)外部服務(wù)

    2024年02月22日
    瀏覽(56)
  • Zookeeper 復(fù)習(xí)知識(shí)點(diǎn)(更新中)

    Zookeeper 復(fù)習(xí)知識(shí)點(diǎn)(更新中)

    Zookeeper 是開(kāi)源的,是一個(gè)基于觀察者模式設(shè)計(jì)的分布式服務(wù)管理框架,負(fù)責(zé)存儲(chǔ)和管理大家都關(guān)心的數(shù)據(jù),然后接收觀察者的注冊(cè),一旦這些數(shù)據(jù)發(fā)生變化,Zookeeper 負(fù)責(zé)通知已經(jīng)注冊(cè)的觀察者。Zookeeper 相當(dāng)于文件系統(tǒng) + 通知機(jī)制。 1.1 Zookeeper 特點(diǎn) 集群架構(gòu) :Zookeeper 通常由

    2024年01月18日
    瀏覽(47)
  • 項(xiàng)目知識(shí)點(diǎn)記錄

    項(xiàng)目知識(shí)點(diǎn)記錄

    Java程序使用 JDBC 接口訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)的時(shí)候,需要以下幾步: 創(chuàng)建全局 DataSource 實(shí)例,表示數(shù)據(jù)庫(kù)連接池; 在需要讀寫(xiě)數(shù)據(jù)庫(kù)的方法內(nèi)部,按如下步驟訪問(wèn)數(shù)據(jù)庫(kù): 從全局 DataSource 實(shí)例獲取 Connection 實(shí)例; 通過(guò) Connection 實(shí)例創(chuàng)建 PreparedStatement 實(shí)例; 執(zhí)行 SQL 語(yǔ)句,如果是

    2024年02月13日
    瀏覽(21)
  • C#知識(shí)點(diǎn)、常見(jiàn)面試題

    https://github.com/JackYan666/CSharpCode/blob/main/CSharpCode.cs 1.For循環(huán)刪除集合元素可能漏刪:從后面往前刪除 2.Foreach不能直接修改集合元素:用遞歸的思想,刪除完了的集合重新遍歷 3.閉包問(wèn)題:for循環(huán)存在閉包,可以通過(guò)使用臨時(shí)變量解決;Task存在閉包問(wèn)題可以通過(guò)wait解決,可以通

    2024年02月10日
    瀏覽(22)
  • WPF復(fù)習(xí)知識(shí)點(diǎn)記錄

    由于近幾年主要在做Web項(xiàng)目,客戶端的項(xiàng)目主要是以維護(hù)為主,感覺(jué)對(duì)于基礎(chǔ)知識(shí)的掌握沒(méi)有那么牢靠,趁著這個(gè)周末重新復(fù)習(xí)下WPF的相關(guān)知識(shí)。 文章內(nèi)容主要來(lái)自大佬劉鐵錳老師的經(jīng)典著作《深入淺出WPF》。 因?yàn)槭菑?fù)習(xí),所以知識(shí)內(nèi)容不會(huì)一一記錄,如有需要了解更多可

    2024年02月11日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包