一直仰慕Xamarin的大名,最近抽空去浅学了一下。

最后有一种这东西不咋地,又有一种这东西还不错的感觉

先说下为什么不咋地?

  1. 如果在公司项目使用Xamarin.forms这个东西。按照国内APP设计的风格,我感觉就会很悲剧,因为Forms这个夸平台的库无法(或者说很难)做到多平台UI界面一样,Forms提供的控件,在不同的平台渲染出来的样式有很大的差别,而且控件很少,如果要使用百度地图这类的控件,还需要自己写Render。我个人感觉距离做商业软件的距离还有很远。当然做一些简单的内部使用的程序还是没问题的,至少没有明显的坑
  2. 如果使用Xamarin.Android和Xamarin.IOS的话,必须对原生的开发有足够的了解。而且C#水平应该也要过得去,不然根本无法参照网上大堆的原生代码去做开发(当然如果你特别厉害,啥都自己写,当我没说)
  3. 原生库绑定的坑,也很难找到答案,不过主流的库绑定还是能找到绑定爬坑的文章的

为什么又说还不错?

  1. 我本身学习这个技术不是为了在工作中使用。只是为了空余时间写些自己的东西。以后想朝着所谓的独立开者去发展。我感觉很适合我个人
  2. 现在MSDN有了中文的机器翻译文章,学习难度非常低,只要有耐心。(不过知识体系还是很庞大的)
  3. 跨平台能力非常厉害。IOS Android UWP,目前市面上主流的跨平台方案,H5的那一套,基本都是只有安卓 iOS两端,uwp基本被放弃了。(随着Windows10的升级数继续上升,我感觉UWP以后也是一个很有前景的平台,独立开发者肯定是不愿意放弃的)
  4. 和Monogame等游戏引擎结合非常好,就算不做游戏,做一些图形工具也是非常好的。

因为刚接触,了解有限,难免有认知错误的地方。

我也会在以后的日子继续深入学习Xamarin。

如果不以找工作为目的。想弄个人的作品,或者企业内部使用的APP。Xamarin绝对是第一选择

初步学习Xamarin的感受的更多相关文章

  1. 状态保持以及AJAX的初步学习

    嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...

  2. 1从零开始学习Xamarin.iOS安装篇

    安装和配置xamarin.ios 最近.net 开源新闻很火呀,于是想学习xamarin,早1年前就了解过这个东西,但是一直没有时间来学习,我这里装的是MAC上面的版本,废话不多说开始第一步安装. 概 ...

  3. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  4. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  5. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  6. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  7. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  8. Git的初步学习

    前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...

  9. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

随机推荐

  1. Linux中如何通过设备号找到设备

    关于Linux中的设备文件,设备文件用来为操作系统和用户提供它们代表的设备接口.所有的Linux设备文件均位于/dev目录下,是根(/)文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须 ...

  2. selenium-获取一组数组进行操作(七)

    selenium-获取一组数组进行操作 以  纵横中文网  中获取24小时畅销榜的书单为例 此文仅做 selenium 在自动化测试中怎么获取一组数据进行说明,不做网络爬虫解释 当然,使用爬虫得到本文 ...

  3. C#-委托(十七)

    概述 委托(Delegate) 是存有对某个方法的引用的一种引用类型变量 委托特别用于实现事件和回调方法.所有的委托都派生自 System.Delegate 类 委托是一个类,么它就可以被定义在任何地 ...

  4. NVIDIA显卡笔记本安装ubuntu驱动以及分辨率之详解

    随着对ubuntu的了解,突然想在自己的笔记本上装一个双系统.在网上查了安装方法之后,发现因为nvidia显卡的原因会出现一些问题,结果在我自己装了之后发现问题要比看到的多,再看了无数个帖子之后,最终 ...

  5. Stopwatch + C#打印日志方法

    打印一个接口.方法的运行时间在程序中是很容易遇到的一件事情:现在,我就分享一个我在工作中使用的临时打印日志的方法和结合 Stopwatch 打印测量某个时间间隔的运行时间的方法. Stopwatch ...

  6. 登录Windows界面前执行自定义脚本

    通常情况下,进入Windows界面之前都有一个登录过程,如何在登录前让系统执行脚本呢?下面介绍一种方法. 1.打开组策略,在Run(运行)中输入GREDIT.MSC,点击确认. 2.依次点击Compu ...

  7. ubuntu16.04如何安装多个版本的CUDA

    我的机器是CUDA16.04的,之前装过CUDA10.0,因为一些原因,现在需要安转CUDA9.0. 1.首先https://developer.nvidia.com/cuda-90-download ...

  8. 【算法】LeetCode算法题-Count And Say

    这是悦乐书的第153次更新,第155篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第12题(顺位题号是38).count-and-say序列是整数序列,前五个术语如下: ...

  9. Servlet(五):一个Servlet处理多个请求

    一.为什么要使用一个Servlet来处理多个请求? 当浏览器发送了一次请求到服务器时,servlet容器会根据请求的url-pattern找到对应的Servlet类,执行对应的doPost或doGet ...

  10. Go学习笔记07-结构体与方法

    Go学习笔记07-结构体与方法 Go语言 面向对象 结构的定义与创建 面向对象 Go语言只支持封装,不支持继承和多态. Go语言中只有struct,即结构体:没有class. 结构的定义与创建 pac ...