제안 1: 문자열을 올바르게 사용하세요
string str1 = "str1" + 9; string str2 = "str2" + 9.ToString();
첫 번째 코드 줄은 박싱과 문자열 연결을 생성합니다
두 번째 코드 줄은 내부적으로 사용되는 ToString()을 사용합니다. Number.FormatInt32
프로토타입은
그리고 NumberFormatInt32는 관리되지 않는 메서드로 일반 C# 관리 코드보다 훨씬 더 효율적으로 실행되므로 코드의 두 번째 줄이 첫 번째 줄보다 더 효율적입니다
그것은 무엇입니까? 관리 코드와 비관리 코드입니다. 다른 블로그의 한 구절을 인용했습니다:
관리 코드 및 비관리 코드우리 모두 알고 있듯이 일반 프로그래밍에 사용하는 고급 언어는 컴퓨터에서 인식할 수 없습니다. . 고급 언어를 기계가 이해하고 실행하려면 먼저 기계어로 번역해야 합니다. 简单理解就是托管代码加了一个中间层,使其可以跨平台,不过效率会降低,而非托管代码就不会产生这样的情况 所以我们编写代码秉承一个原则:尽量减少装箱拆箱 StringBuilderStringBuilder的效率来源于预先以非托管的方式分配内存,如果没有预先定义长度,默认长度为16,不够的时候会重新分配内存,依次加16的倍数,所以如果你提前知道字符串需要的最大长度,最好预先定义好,这样就不会频繁分配内存从而带来效率的降低 2、使用默认转型方法 这个建议的大体内容是尽量使用系统所带的转换类型的方法 例如 int.Parse ToString() System.Convert 等等 3、区别对待强转类型和as is两个类型之间转换有两种情况 1. 他们是父子类的关系: ChildType = (ChildType)ParentType 2.没有继承关系,或者继承同一个父类,这时候就需要重写强转方法 class FirstType { public string Name { get; set; } } class SecondType { public string Name { get; set; } public static explicit operator SecondType(FirstType firstType) { SecondType secondType = new SecondType() { Name = firstType.Name }; return secondType; } } FirstType firstType = new FirstType() { Name = "张" }; SecondType secondType = (SecondType)firstType; 로그인 후 복사 如果是继承的关系,为了效率推荐使用 ChildType = ParentType as ChildType 这个就更上面提到的,尽量使用系统方法的转换,而不是强制转换 我写Unity的时候有这样一个需求,右键点击装备的时候会使用,装备有Equipment,Weapon,我们需要判断是Equipment还是Weapon类型,它们都是继承Item类型,有两种方法可用: Weapon weapon = item as Weapon; if(weapon != null) { //TODO 使用武器 } if(item is Weapon) { weapon weapon = item as Weapon; //TODO 使用武器 } 로그인 후 복사 第一种方法只判断了一次类型,而第二种方法判断了两次类型 书上说as不能判断基元类型,但是经过我的测试发现书上写错了,as仅仅不能判断值类型,这里大家可以自己测试一下 相关文章: 위 내용은 C# 학습 기록: 고품질 코드 작성 및 조직 제안 개선 1-3의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
Nuxt 3는 SSR에서 렌더링되지 않습니다.
그래서 개인 환경 변수를 얻으려고 할 때 문제가 발생했습니다. 내 페이지가 ssr인 경우에만 얻을 수 있다는 것을 알고 있습니다. 문제는 내가 그것을 비활성화한 ...
에서 2024-04-05 15:04:40
0
1
3642
Boostrap 4에 반응하도록 이 카드를 어떻게 조정합니까?
각 행에 카드 4장을 표시하고 화면 크기가 변경되면 스택으로 표시하려면 어떻게 해야 합니까? 이상적으로는 둘 사이에 약간의 공간이 있어야 합니다. 나는 연구할 수...
에서 2024-04-05 10:48:45
0
1
4072
CommandText 속성 초기화 문제
C# 콘솔 응용 프로그램을 사용하여 데이터를 2개(나중에 3개) 테이블로 동시에 구체화하려고 합니다. "Users" 테이블에 이름, 성, 사용자...
에서 2024-04-04 22:43:24
0
1
385
창 기능을 사용하여 가장 높은 값을 열로 추가
다음과 같은 테이블이 있습니다. 데이터 복사 쿼리: DROPTABLEIFEXISTSunits_table;CREATETEMPTABLEunits_table(Brand...
에서 2024-04-04 12:18:16
0
2
405
관련 주제
더>
|