当前位置:首页>开发>正文

为什么c#的类的构造函数内不允许使用异步执行 js 构造器函数内部定义对象的方法

2023-06-19 00:57:16 互联网 未知 开发

 为什么c#的类的构造函数内不允许使用异步执行 js 构造器函数内部定义对象的方法

为什么c#的类的构造函数内不允许使用异步执行

构造函只在实例化这个类的时候执行,执行之后才可以被初始化(静态类的静态构造函数在任何静态类的任何静态方法被调用时构造函数被执行)。实际上这个类初始化的过程就包括了自动执行构造函数。如果你的初始化过程(执行构造函数过程中)需要很长时间才能执行完,那么实际执行起来,初始化 这个对象(类)的时候也要等很长时间(同步等待)。
如果你真的有需要 初始化这个类过程异步等待也不是没办法,只需要调用改实例的时候异步就行了。参考一下:
public class TestFoo{
    public TestFoo(){
        Thread.Sleep(1000)
    }
    public string Foo(){
        return "OK"
    }
}

public static void Main(){
    TestFoo myfoo = null
    Task.Run(()=>{
        myfoo = new TestFoo()
                Console.WriteLine(myfoo.Foo())
    })
    Console.WriteLine("Break 0")
    Console.ReadKey()
}这个实际上的运行结果是 先输出break0 然后十秒后输出OK 。
人脑编译的没测试

实际上你的说法是有问题的。构造函数过程中是可以调用异步方法的。但是本身不可以被异步执行。
另一个例子,随便写的
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("break 0")
            TestFoo mytest = new TestFoo()
            Thread.Sleep(1000)
            mytest.Foo("User Call")
            Console.WriteLine("break 1")
            Console.ReadKey()
        }
    }
    public class TestFoo{
        public TestFoo() {
            Foo("Construction")
        }
        Task Bar(string input) {
            Task toout = Task.Run(()=> {
                Thread.Sleep(5000)
                return input
            })
            return toout
        }
        public async void Foo(string input) {
            Console.WriteLine( await Bar(input))
        }
    }

js 构造器函数内部定义对象的方法

this.changeName=changeName 这句相当于

this.changeName=function(name)
{
this.lastname=name
}
相于把函数暴露给外面,把句去掉,myMother.changeName("Ballmer") 这个调用会提示, xxx undefine

javascript构造函数

在这里Box就相当于一个类.
this.name、this.age是这个类的属性,this.run则是这个类的方法


this.name=name  是说的name的值给Box的name属性.
是如何调用的呢?
代码:
function Box(name, age) {//构造函数模式
this.name = name
this.age = age
this.run = function () {
   return this.name   this.age   运行中...
}
}
var boxobj=new Box("百度",15)//这个意思是 创意见Box对象boxobj并初始化name和age属性
alert(boxobj.run())//调用boxobj方法并alert出返回值 返回内容是:百度15运行中...

TypeScript 和 JavaScript 的区别

TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言,我们已经熟知 TypeScript 是 JavaScript 的一个超集。JavaScript 和 TypeScript 的主要差异:
1、TypeScript 可以使用 JavaScript 中的所有代码和编码概念,TypeScript 是为了使 JavaScript 的开发变得更加容易而创建的。例如,TypeScript 使用类型和接口等概念来描述正在使用的数据,这使开发人员能够快速检测错误并调试应用程序
2、TypeScript 从核心语言方面和类概念的模塑方面对 JavaScript 对象模型进行扩展。
3、JavaScript 代码可以在无需任何修改的情况下与 TypeScript 一同工作,同时可以使用编译器将 TypeScript 代码转换为 JavaScript。
4、TypeScript 通过类型注解提供编译时的静态类型检查。

5、TypeScript 中的数据要求带有明确的类型,JavaScript不要求。
6、TypeScript 为函数提供了缺省参数值。
7、TypeScript 引入了 JavaScript 中没有的“类”概念。
8、TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。

最新文章

随便看看