C#中FTP登录如何传递非0的空int类型端口参数
解决C# int类型端口参数传递空值的问题
C#里值类型int本身无法直接传递null,针对你遇到的FTP无端口的场景,可按以下方案处理:
直接使用FTP默认端口21
绝大多数未指定端口的FTP服务默认使用21端口,这是最省心的解决方案,直接把端口参数传21即可:string FeedFile = FTPOp( "ftp.XXXXXX.com", 21, "USERNAME", "PASSWORD", string.Format("/Documents/Vendor/acknowledgements/{0}", FeedFile), string.Format(RootDirectory + Name + "\\Input\\" + FeedFile) );检查FTPOp是否有重载版本
查看遗留代码中的FTPOp方法,是否存在不需要端口参数、或端口参数为int?(可空整数)的重载。如果有,直接调用对应重载,比如支持int?的版本可以传null:string FeedFile = FTPOp( "ftp.XXXXXX.com", null, "USERNAME", "PASSWORD", string.Format("/Documents/Vendor/acknowledgements/{0}", FeedFile), string.Format(RootDirectory + Name + "\\Input\\" + FeedFile) );修改FTPOp方法参数类型(若允许改动代码)
如果有权限修改遗留的FTPOp方法,把端口参数改为int?(可空整数),在方法内部处理null的情况——默认使用21端口:// 修改后的FTPOp方法签名 public static string FTPOp(string site, int? port, string username, string password, string remotePath, string localPath) { int actualPort = port ?? 21; // 若port为null则用默认21 // 后续FTP连接逻辑使用actualPort // ... }调用时直接传
null即可,无需担心参数类型不匹配。
内容的提问来源于stack exchange,提问作者Ghostwheel
相关产品推荐
相关产品推荐

