java winform小案例_C#和java区别小整理

引言:

刚开始学习C#,发现它和java很多语法都类似,但也有一些区别,下面整理的内容(区别java语法的)都是让我头疼了的地方,希望有和我一样从java转到C#的读者能减少走弯路,也希望有C#高手能多多指点小弟。

正文:

嘿嘿,不罗嗦了,下面就是我遇到过的问题。

1.写控制台程序时,有时窗口一闪而过,可以在Main()函数最后一行加上Console.ReadKey();读取键盘输入防止窗口立刻消失(和C++system("pause");类似)。

2.关于二维数组的定义不同,比如定义一个5X4的二维数组,C#中是:(方法一)int[][] a=new int[5][];for(int i=0;i<4;i++){a[i]=new int[4];}

(方法二) int[,] a=new int[5,4];

3.C#中的换行符是'\r\n'或者Environment.NewLine();(我都是用的前者,如果需要换平台使用程序则使用后者)。

4.在winform程序中你如果想要点击一个按钮出现一个可以选择文件的对话框,那太好了,在点击按钮事件中添加OpenFileDialog ofd = new OpenFileDialog();ofd.ShowDialog();

就可以了,获取该文件路径用ofd.FileName。

5.事件入口标志就是右边属性栏下边属性页右边的闪电标志,点击它就好了。(请不要发笑,我当时就找了好久)。

6.

(1)如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");

(2)如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

“.”和“|”都是转义字符,必须得加"\\";

(3)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");

7.C#中把string当做char[]处理,如java中的charAt在C#中直接用Str[i]就可以了。(这个够方便,嘿嘿)

8.C#中正则表达式要用到Regex,举例:Regex re=new Regex(“[0-9]”);re.isMatch(String str);

9.遍历文件夹时C#中一般使用的都是传递地址,然后在判断它是文件还是文件夹,因为C#中文件的声明(FileInfo)和文件夹的声明(DirectoryInfo)不一样,

而在java中则都是File。(下面的程序是我写的遍历某目录下this和word的次数,里面有遍历文件夹代码)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png遍历文件夹

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace wordTimes

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

clear();

String[] fid = { "this", "word" };

findFile(textBox1.Text,fid);

//textBox2.Text=calculate(textBox1.Text, fid)[0].ToString(); }

//先找出目录下的所有txt文件 public void findFile(String path,String[] fid){

if(Directory.Exists(path)){

//遍历该目录下的所有文件 foreach(String filepath in Directory.GetFileSystemEntries(path)){

findFile(filepath,fid);

}

}else{

if(File.Exists(path)){

FileInfo f = new FileInfo(path);

//如果文件以txt结尾,则扫描内容 if(f.Name.EndsWith(".txt")){

int[] times = findPara(path,fid);

String str=path;

if (times != null)

{

str = str+ "\r\n" + fid[0] + ":" + times[0] + "\r\n" + fid[1] + ":" + times[1] + "\r\n";

}

else

str = str + "\r\n" + fid[0] + ":" + 0 + "\r\n" + fid[1] + ":" + 0 + "\r\n";

textBox2.Text = textBox2.Text + str;

label2.Text = "提示:统计成功!!";

}

}

return;

}

}

//把txt文件的每一行都提取出来处理 public int[] findPara(String path,String[] fid){

FileInfo f = new FileInfo(path);

if(f.Length==0){

return null;

}

int[] mid=new int[fid.Length];

try {

FileStream fis=null;

StreamReader br=null;

try{

fis=new FileStream(path,FileMode.Open);

br=new StreamReader(fis);

String s = br.ReadLine();

//以行为单位进行处理 while(s!=null&&!s.Equals("")){

for (int i = 0; i < fid.Length; i++) {

mid[i]+=findTimes(s,fid[i]);

}

s=br.ReadLine();

}

}finally{

if(br!=null) br.Close();

if(fis!=null) fis.Close();

}

} catch (Exception ex) {

label2.Text = "提示:读文件出错!";

}

return mid;

}

//查看一行字符中word和this出现的次数 public int findTimes(String str1,String str2){

int num=0;

int pos=str1.IndexOf(str2, 0);

while(pos!=-1){

num++;

pos=str1.IndexOf(str2, pos+str2.Length);

}

return num;

}

//清理屏幕 public void clear()

{

label2.Text = "提示:";

textBox2.Text = "";

}

}

}

10.将图像灰度化就是获取每一个点的像素,然后R*0.299+G*0.587+B*0.114得到它的灰度像素,再把此灰度像素代会原图像即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png图像灰度处理

private void button2_Click(object sender, EventArgs e)

{

//bm的声明System.Drawing.Bitmap bm; if (bm != null)

{

Color c;

int ret;

for (int i = 0; i < bm.Width;i++)

{

for (int j = 0; j < bm.Height; j++)

{

c = bm.GetPixel(i,j);

ret = (int)(c.R * 0.299 + c.G * 0.587 + c.B * 0.114);

bm.SetPixel(i, j, Color.FromArgb(ret, ret, ret));

}

}

pictureBox2.Image = bm;

}

}

11.C#中的Substring(起始位置,子字符串长度)而java中是subString(起始位置,终止位置)(哈哈,这个可是相当纠结区别,坚持看到最后的童鞋,这个就当做奖励了)。

尾声:

我知道其实你也看出来了我是菜鸟,还有好多区别我都不知道,希望各位大大能多多指教,呵呵,不胜感激!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值