很多人在学完C#后都会问:这门语言能不能拿来开发手机App?毕竟现在谁不用手机呢,要是能用熟悉的语言搞点实用的小应用,比如记账工具、待办清单,甚至发朋友圈的插件,那多方便。
C#不是只能写Windows程序吗?
以前确实如此。C#最早是微软推出的,主要用来开发Windows桌面软件和后台服务。很多人一听到C#就想到Visual Studio、WinForm、WPF这些词,觉得它跟手机八竿子打不着。但技术早就变了,C#也能写手机App,而且还不止一种方式。
用Xamarin开发原生App
Xamarin是目前用C#开发手机App最主流的方案。它被微软收购后,直接集成进了Visual Studio,安卓和iOS都能搞定。你可以用C#写代码,调用原生控件,最终生成的是真正的安卓APK和iOS应用包。
比如你想做个简单的页面,显示“欢迎使用我的App”,代码可以这样写:
using Xamarin.Forms;
public class App : Application
{
public App()
{
MainPage = new ContentPage
{
Content = new Label
{
Text = "欢迎使用我的App",
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center
}
};
}
}
这套代码能在安卓和iOS上同时运行,UI会自动适配平台风格。你不需要分别写两套界面,省了不少事。
.NET MAUI:Xamarin的升级版
现在微软主推的是.NET MAUI(.NET Multi-platform App UI),算是Xamarin的进化版本。它支持安卓、iOS、macOS、Windows四端统一开发。如果你用的是Visual Studio 2022最新版,创建新项目时选“.NET MAUI App”,就能直接开始写跨平台手机程序。
MAUI的好处是跟.NET生态深度整合。比如你原来有个C#写的后台服务,现在前端App可以直接复用部分逻辑代码,连数据模型都不用重复定义。
游戏也算App:Unity用的就是C#
很多人没意识到,Unity引擎开发的手机游戏,脚本基本都是用C#写的。你玩过的《炉石传说》《王者荣耀》早期版本、《原神》的部分模块,背后都有C#的身影。虽然Unity更偏向游戏,但一些带交互的轻量级工具类App也可以用它做出来,尤其是需要动画或3D效果的。
实际体验怎么样?
用C#开发手机App,编译速度比Java或Swift慢一点,特别是首次构建时要下载一堆依赖。真机调试也得注意连接设置,安卓手机要开开发者模式,iOS则必须有Apple账号才能打包安装。
但一旦跑起来,性能并不差。UI流畅度接近原生,内存管理靠GC(垃圾回收),写起来比手动管理指针轻松多了。如果你已经会C#,想快速出一个内部使用的员工打卡App,完全没必要从头学Kotlin或Swift。
有没有不能做的事?
也不是万能的。有些特别底层的功能,比如自定义通知栏样式、调用最新的摄像头API,可能需要写点原生代码配合。这时候就得补点Java或Swift,或者找现成的NuGet包。
另外,App上架应用商店时,苹果对启动速度和包体积卡得严,MAUI项目默认打出来的iOS包偏大,得手动优化裁剪。不过这些问题都有社区方案,搜一搜基本都能解决。