Mono为C#添加了类型推断支持

Mono为C#添加了类型推断支持,第1张

据Marek Safar称 通过使用一种名为类型推断(type inference)的技术 Mono上的C# 编译器现在已经能够支持隐式类型的局部变量以及隐式类型的数组了

在 类C 的语言 比如C#中 我们经常使用类似 type variable = new type 这样略显冗余的办法来创建一个对象 若是变量的类型名称较长 或是会经常变化 那么这样的声明方法更是将显得非常乏味

借助于最新引入的 var 关键字 C# 大大减小了这类冗余 通过这样的声明方式 开发者即可在得到动态创建类型便利的同时 也无须牺牲原有的静态类型支持 编译器将通过等号右面的类型信息来确定变量的实际类型

需要注意的一点是 C#仍旧是早期绑定和静态类型的 类似Visual Basic这类延迟绑定(late binding)语言中的一些常见问题(比如由拼写错误造成的 missing method exception )并不会在C#中出现

虽然看上去不错 不过添加类型推断却不只是为了提高开发者的那么一点点输入速度 类型推断是实现匿名类的一个必要的前提条件 而匿名类则在LINQ中被广 泛使用 因为匿名类并没有一个指定的类型名称 所以若是没有了类型推断的支持 我们就无法在C#中创建该类型的实例 (VB则是通过延迟绑定来实现的这个 功能 不过这也带来了 missing method exception 之类的问题 )

C#中支持两种类型推断 隐式类型变量和隐式类型数组 二者的实现基础完全相同 即在编译时将 var 替换成为分析得到的正确的变量或数组类型表达式

若是变量的声明和赋值不在同一行书写的话 编译器将不允许我们使用类型推断 虽然从技术角度上考虑 实现这个功能没有什么困难 不过C#编译器的开发团队可能是为了避免其带来的复杂性 所以并没有考虑支持这个功能

Marek Safar还提到了两个无法应用类型推断的场景

故名思意 隐式类型局部变量 将无法用于域变量或常量的声明中 否则将导致编译错误

我无法确定为什么会设置这样的限制 或许我有些地方考虑得也不够全面

lishixinzhi/Article/program/net/201311/15215

以下是hp网站上hp designjet 500mono42 打印机在win7 64位系统下的驱动链接:

http://h20566.www2.hp.com/portal/site/hpsc/template.PAGE/public/psi/swdDetails/?sp4ts.oid=2511457&spf_p.tpst=swdMain&spf_p.prp_swdMain=wsrp-navigationalState%3Didx%253D%257CswItem%253Dpl_98586_1%257CswEnvOID%253D4063%257CitemLocale%253D%257CswLang%253D%257Cmode%253D%257Caction%253DdriverDocument&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken

驱动程序下载后,右击解压缩,记住解压后文件保存的位置,然后使用添加打印机的方式按装驱动,以下是添加打印机驱动的具体方法:

打开控制面板-打印机,选择添加打印机,点下一步,选择添加本地打印机,端口选择为:LPT1/usb或是dot4,再点击下一步,选择驱动,点击“从磁盘安装”,再点击浏览,选择到下载后解压缩的文件夹,选中其中的 *.inf文件,点击确定,再点击下一步,按照提示安装,直到完成。

以上是安装驱动的方法,可以 *** 作试试看。

如果无法安装,请问打印机和电脑是如何连接的?

安装到哪一步出现什么问题无法安装呢

请提供上面的信息,可以追问。

主要步骤如下:

安装预编译的Mono

安装&配置Cygwin

下载并解压Mono的源代码

构建Mono

修改 Cygwin/Mono 来解决构建过程中出现的问题

安装 Mono 并修改安装配置

针对Xamarin Studio的一些修改和配置

从git下载源代码,并构建Mono

这个步骤在Windows 8.1 64位的系统下测试可用。

安装编译好的Mono执行文件

一个稳定并完成编译的Mono 3.2.3可以在这里下载。下载并安装它。

从开始栏打开命令行,之后用一下命令检查它是否正常运行着:

1

mono --version

你应该看到以下信息出现,并且确定版本是3.2.3:

C:\Program Files (x86)\Mono-3.2.3>mono --version

Mono JIT compiler version 2.10.9 (tarball)

Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-pro

ject.com

TLS: normal

SIGSEGV: normal

Notification: Thread + polling

Architecture: x86

Disabled: none

Misc: softdebug

LLVM: supported, not enabled.

GC:Included Boehm (with typed GC and Parallel Mark)

C:\Program Files (x86)\Mono-3.2.3>

安装Cygwin

下载并安装32位的Cygwin,这是一款在Windows下模拟Unix命令行的工具,我们用它来创建Mono。安装教程可以参考这里。

安装过程中,你会被提示要选择安装必要的包。我们创建Mono所需要的包并没有在默认安装设置里,所以我们要手动选择他们。

在Mono on Windows教程里提到了很多关于包的细节,这些包应该是:

1

autoconf, automake,bison, gcc-core, gcc-g++,mingw-gcc, libtool, make, python,

在《Final Ba ttle instructions》说提到了这些包:

1

gettext-devel, gettext, intltool, libiconv, pkg-config

另外,我们最好也要这些包:

1

wget, zip patch, openssh, vim

配置 Cygwin

有人通过 mono-dev 的邮件列表向我建议说,Cygwin 应该可以通过配置 "noacl" 选项来挂载系统的宿主系统的磁盘驱动器,否则的话,进行文件访问的时候可能会出问题。你可以点击此处还有此处了解详情。

从开始菜单中打开Cygwin,编辑 /etc/fstab 文件,并按照下面的指示 *** 作:

1

# For a description of the file format, see the Users Guide

2

# http://cygwin.com/cygwin-ug-net/using.html#mount-table

3

# This is default anyway:

4

none /cygdrive cygdrive binary,posix=0,user 0 0

把 noacl 选项添加进去,如下所示:

1

# For a description of the file format, see the Users Guide

2

# http://cygwin.com/cygwin-ug-net/using.html#mount-table

3

# This is default anyway:

4

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

你可能需要关掉Cygwin并重新打开它来确保使刚才的修改生效。你可以通过运行 'mount' 命令看一下 'noacl'是否在其输出的内容里面,以便检查配置是否生效。

获取 Mono 发行包

当我写这篇文章的时候,Mono的最新发布版本是3.4.0。在Windows下,还没有该版本的安装包,最新的安装包是3.2.3。我们要在这里构建一个3.4.0版本的二进制包。

你可以从这里下载 Mono 3.4.0 的源代码,并把它解压到你的磁盘上。

你需要使用 Cygwin来下载和解压源码。你也可以在Cygwin外部做这些事,但是如果你不注意的话,可能会发现代码中的换行符(CRLF)被修改掉了,这很可能会导致构建失败。

所以,打开 Cygwin 终端命令行:

1

$ cd /cygdrive/c $ mkdir monosources$ cd monosources $ wget http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2

2

$ tar xjvf mono-3.4.0.tar.bz2

从Mono发布的压缩包中构建

构建Mono的时候可能会出现一些错误,如文件丢失,或者和Cygwin的头文件冲突等。如果出现错误,我们可以按照下面的说明来修正错误,但是我们现在要做的是开始构建Mono,看看我们能走到哪一步。

我们要给 Mono 3.4.0 指定一个目标文件夹,并且我们将要把它设置成安装目录。如下所示:

1

$ cd /cygdrive/c

2

$ mkdir monoinstall

3

$ cd monosources/mono-3.4.0

4

$ ./autogen.sh --prefix="C:\monoinstall" --with-preview=yes

注意:我们给 --prefix指定的是Win32指定的路径格式,而不是Cygwin或 *nix的路径格式。

Autogen应该顺利的完成,接下来我们就要配置构建命令了,如autogen推荐的那样:

1

$ ./configure --host=i686-pc-mingw32

在配置进程结束的时候,我们能够看到类型下面的一些输出:

01

mcs source: mcs

02

03

Engine:

04

GC: sgen and bundled Boehm GC with typed GC and parallel mark

05

TLS: pthread

06

SIGALTSTACK: no

07

Engine: Building and using the JIT

08

oprofile: no

09

BigArrays: no

10

DTrace: no

11

LLVM Back End: no (dynamically loaded: no)

12

13

Libraries:

14

.NET 2.0/3.5: yes

15

.NET 4.0: yes

16

.NET 4.5: yes

17

MonoDroid: no

18

MonoTouch: no

19

Xamarin.Mac: no

20

JNI support: no

21

libgdiplus: assumed to be installed

22

zlib:

一旦配置结束,我们就可以用以下方式来开始构建进程了。

1

$ make


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11708485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存