C#基础概念二十五问 21-25

l__8666

l__8666

2016-02-19 11:08

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐C#基础概念二十五问 21-25,赶紧看过来吧!
21.P/Invoke是什么?
答:
在受控代码与非受控代码进行交互时会产生一个事务(transition) ,这通常发生在使用平台调用服务(Platform Invocation Services),即P/Invoke
如调用系统的 API 或与 COM 对象打交道,通过 System.Runtime.InteropServices 命名空间
虽然使用 Interop 非常方便,但据估计每次调用事务都要执行 10 到 40 条指令,算起来开销也不少,所以我们要尽量少调用事务
如果非用不可,建议本着一次调用执行多个动作,而不是多次调用每次只执行少量动作的原则

22.StringBuilder 和 String 的区别?
答:
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
另外,对于 String 我们不得不多说几句:
1.它是引用类型,在堆上分配内存
2.运算时会产生一个新的实例
3.String 对象一旦生成不可改变(Immutable)

3.定义相等运算符(== 和 !=)是为了比较 String 对象(而不是引用)的值
示例: 

using System;
using System.Collections.Generic;
using System.Text;
namespace Example22
{
    class Program
    {
        static void Main(string[] args)
        {
            const int cycle = 10000;
            long vTickCount = Environment.TickCount;
            String str = null;
            for (int i = 0; i  cycle; i++)
                str += i.ToString();
            Console.WriteLine("String: {0} MSEL", Environment.TickCount - vTickCount);
            vTickCount = Environment.TickCount;
            //看到这个变量名我就生气,奇怪为什么大家都使它呢? :)
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i  cycle; i++)
                sb.Append(i);
            Console.WriteLine("StringBuilder: {0} MSEL", Environment.TickCount - vTickCount);
            string tmpStr1 = "A";
            string tmpStr2 = tmpStr1;
            Console.WriteLine(tmpStr1);
            Console.WriteLine(tmpStr2);
            //注意后面的输出结果,tmpStr1的值改变并未影响到tmpStr2的值
            tmpStr1 = "B";
            Console.WriteLine(tmpStr1);
            Console.WriteLine(tmpStr2);
            Console.ReadLine();
        }
    }
}
结果:
String: 375 MSEL
StringBuilder: 16 MSEL
A
A

A

23.explicit 和 implicit 的含义?
答:
explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换
explicti 表示显式转换,如从 A - B 必须进行强制类型转换(B = (B)A)
implicit 表示隐式转换,如从 B - A 只需直接赋值(A = B)
隐式转换可以让我们的代码看上去更漂亮、更简洁易懂,所以最好多使用 implicit 运算符。不过!如果对象本身在转换时会损失一些信息(如精度),那么我们只能使用 explicit 运算符,以便在编译期就能警告客户调用端
示例: 
using System;
using System.Collections.Generic;
using System.Text;
namespace Example23
{
    class Program
    {
        //本例灵感
展开更多 50%)
分享

猜你喜欢

C#基础概念二十五问 21-25

编程语言 网络编程
C#基础概念二十五问 21-25

C#学习基础概念二十五问

编程语言 网络编程
C#学习基础概念二十五问

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

C#学习基础概念二十五问 11-15

编程语言 网络编程
C#学习基础概念二十五问 11-15

ASP 3.0高级编程(二十五)

ASP
ASP 3.0高级编程(二十五)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

盘点女人二十五妆容重点

妆容 女人 彩妆 化妆
盘点女人二十五妆容重点

怀孕二十五周有什么变化

怀孕 胎儿 发育
怀孕二十五周有什么变化

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

怎样将Excel单元格变成图片

怎样将Excel单元格变成图片

常用的XHTML标签的使用技巧介绍

常用的XHTML标签的使用技巧介绍
下拉加载更多内容 ↓